Use sudo
:
sudo perl -pi -e 's/^an24:/an24:\*LK*/g' /etc/shadow
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.
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