Script Perl sendo executado como root não pode fazer root

1

Estamos executando o RedHat Enterprise ES 5 em x86_64. Temos um script perl que, entre outras coisas:

  • crie um diretório
  • copiar arquivos de ponto para dentro
  • chown a coisa toda

O diretório de destino é um diretório montado automaticamente, que na verdade é o mesmo.

Se fizermos isso como um script de shell, funcionará:

mkdir /net/host/drive/directory/new
cp /some/stuff/.??* /net/host/drive/directory/new
chown -R user:group /net/host/drive/directory/new

Se fizermos isso em um script perl, seja como system () ou back-ticks, obtemos "operação não permitida".

Este script funciona perfeitamente no Solaris, que é de onde veio.

O script é executado como root, não com qualquer suu ou setuid acontecendo.

Alguém tem alguma ideia do que está acontecendo?

    
por David Mackintosh 20.07.2009 / 03:51

1 resposta

3

Eu vou em um membro aqui e especulo que você provavelmente tem esse sistema de arquivos montado como NFS com root-squash. Esse é um recurso de segurança, porque, do contrário, qualquer pessoa com acesso físico à rede e acesso de montagem de leitura ao sistema de arquivos exportado poderá, com acesso root na máquina cliente, acessar qualquer arquivo nesse sistema de arquivos.

Se você realmente deseja que o root nas máquinas clientes tenha privilégios de root no sistema de arquivos exportado, você deve exportar o sistema de arquivos com a opção "no root squash".

Veja este exemplo . Observe que o valor padrão dessa opção na implementação do servidor NFS pode ser root-squash, portanto, você deve verificar essa documentação novamente.

    
por 20.07.2009 / 04:04