Execute o script no login do usuário como root, com uma captura

5

Estou tentando executar um script PHP como root no login do usuário. O script PHP adiciona um compartilhamento Samba à configuração do Samba, portanto, a necessidade de privilégios de root. O único problema aqui é que o usuário ainda não existe. Este sistema é integrado ao diretório ativo. Portanto, quando um usuário efetua login pela primeira vez, um diretório inicial para eles é criado em /home/DOMAIN/username .

Eu encontrei esta questão e essa parece ser a maneira correta de conseguir o que eu quero, mas estou tendo problemas com a sintaxe, já que não sei o nome do usuário.

Seria algo como:

ALL ALL=(ALL) NOPASSWD: /home/DOMAIN/*/createSambaShare.php

Isso não parece funcionar como está atualmente. Alguém tem alguma idéia ou uma maneira "scriptada" de adicionar um compartilhamento do Samba no login do usuário?

Como fiz outras alterações em /etc/skel , acabei de adicionar o bash necessário para executar o script PHP em .profile. Isto então é copiado para a casa do "novo" usuário e tenta executar o script PHP. Mas falha, porque estes não são usuários privilegiados.

Alterar permissões no script PHP não ajudará. Ele precisa ser executado como sudo porque abre o arquivo de configuração do Samba para gravação. Deixar qualquer usuário executar o script PHP resultaria em um erro do PHP.

A diretiva homes Samba não funciona no meu caso de uso. Eu preciso que o compartilhamento Samba exista uma vez que eles existam no servidor, mesmo quando eles não estiverem conectados.

    
por tubaguy50035 28.09.2012 / 18:41

2 respostas

2

Não coloque o script no diretório pessoal do usuário. Em vez disso, coloque-o em um local fixo. Se o script precisar de alguns argumentos dependentes do usuário, faça o script ler isso de um arquivo - mas você nem precisa disso já que está copiando o script do /etc/skel mesmo assim.

Se você permitir que um usuário execute um script em seu diretório pessoal com privilégios elevados, ele poderá substituir o script por outro script. Então, sua regra proposta seria equivalente do ponto de vista da segurança para

ALL ALL=(ALL) NOPASSWD: /etc/skel/createSambaShare.php
MANY ALL=(ALL) NOPASSWD: ALL

em que MANY é qualquer usuário cujo diretório pessoal esteja em /home/DOMAIN . (Ok, a menos que o diretório pessoal de um usuário seja de propriedade root, não seja gravável para o usuário, e o script não é gravável pelo usuário ou pertencente a ele. Mas isso seria bastante incomum.)

Além disso, recomendo não usar ALL em uma especificação do usuário. Restringir a regra a um grupo.

%sambasharers ALL=(ALL) NOPASSWD: /usr/local/bin/createSambaShare.php
    
por Gilles 28.09.2012 / 19:37
0
  1. Você pode colocá-lo em /etc/profile e ele deve ser executado em qualquer login bem-sucedido.

  2. Adicione o privilégio de execução a todos os usuários para esse arquivo de script. Abra o terminal e digite este comando:

    sudo chmod ugo+x script
    
por user91632 28.09.2012 / 18:47

Tags