Perl - / etc / shadow - Permissão negada

0

O seguinte comando está sendo executado por um usuário não root:

perl -pi -e 's/^an24:/an24:\*LK*/g' /etc/shadow

Uma permissão negada está sendo emitida.

Isso indica alguns problemas de privilégios.

Esse comando pode ser executado?

Eu tentei definir o setuid e group id no script executando este comando sem sucesso.

O sistema operacional é o Solaris 10.

    
por oneway 11.06.2013 / 16:39

2 respostas

1

Use sudo :

sudo perl -pi -e 's/^an24:/an24:\*LK*/g' /etc/shadow
    
por 11.06.2013 / 22:09
7

Apropriadamente, usuários não-root não podem ler o arquivo shadow, então seu script setuid é uma boa ideia.

Infelizmente, o Solaris não irá honrar bits setuid em scripts. Você pode demonstrar isso com um script perl:

Perl:

#!/usr/bin/perl

use POSIX qw(geteuid);
print "$0 is running as ".geteuid()."\n";
unlink "testfile-created-by-$0";
open(fh,">testfile");

close(fh);

e, em seguida, execute o script como este

$ id -u
1000
$ chmod 755 test-script.pl 
$ ./test-script.pl 
./test-script.pl is running as 1000
$ sudo chown root:root test-script.pl
$ sudo chmod 5755 test-script.pl 
$ ./test-script.pl 
./test-script.pl is running as 1000

Então, o que fazer então? Uma solução fácil seria executar o script perl como root, usando sudo ou via crontab do usuário root.

Outra solução seria adicionar o usuário que executará este script ao grupo que possui o / etc / shadow, assim como

usermod -a -G shadow yourusernamehere
    
por 11.06.2013 / 17:49