Por que minha configuração com NFS e setuid não funciona no Linux

0

Estou usando o Linux. Na máquina A eu tenho essa configuração de NFS em etc/exports :

/home 10.0.129.130(rw,no_root_squash)

Eu montei este diretório na máquina A em /home/nfs/ na máquina B. E defini setuid usando chmod u+x program1.sh .

Na máquina B, eu quero que o usuário xyz execute o privilégio de raiz program1.sh usando. A configuração de program1.sh é como abaixo:

-rwsr-x--- 1 root house 1299 May 15 23:54 program1.sh

, que contém mkdir -p /home/nfs/house/nsx/

Defino xyz para estar no grupo house , para que xyz possa executar program1.sh . No entanto, ao executar program1.sh , ele mostra:

mkdir: cannot create directory '/home/nfs/house/nsx/': Permission denied

A execução de program1.sh como root está correta. Eu não sei porque não está funcionando com o usuário xyz .

    
por Marcus Thornton 19.05.2014 / 06:17

2 respostas

1

Do nome program.sh , estou supondo que você esteja tentando executar um script interpretado, não um binário ELF. O Linux ignorou o bit setuid nos scripts desde há muito tempo, devido a possíveis problemas de segurança ( condição de corrida entre o kernel verificando o bit + s e o interpretador de script abrindo o arquivo).

Se esse script precisar estar disponível para usuários específicos, crie uma regra sudo em / etc / sudoers que permita isso:

xyz ALL=(root:root) NOPASSWD: /usr/local/bin/program.sh

Pode haver outras soluções. Por exemplo, se você deseja criar diretórios pessoais automaticamente (no primeiro login), o módulo pam_mkhomedir.so PAM existe para isso.

    
por 19.05.2014 / 12:02
0

Porque somente root e usuário nfs têm permissões em arquivos / pastas em: /home/nfs

    
por 19.05.2014 / 06:24