one*_*way 0 solaris perl shadow
以下命令由非 root 用户执行:
perl -pi -e 's/^an24:/an24:\*LK*/g' /etc/shadow
Run Code Online (Sandbox Code Playgroud)
正在发出被拒绝的许可。
这表明一些权限问题。
这样的命令可以执行吗?
我试图在执行此命令的脚本上设置 setuid 和组 ID,但没有成功。
操作系统为 Solaris 10。
适当地,非 root 用户无法读取影子文件,因此您的 setuid 脚本是一个好主意。
不幸的是,Solaris 不会支持脚本上的 setuid 位。您可以使用 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);
Run Code Online (Sandbox Code Playgroud)
然后像这样运行脚本
$ 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
Run Code Online (Sandbox Code Playgroud)
那该怎么办呢?一种简单的解决方案是以 root 身份实际运行 perl 脚本,使用 sudo 或通过 root 用户的 crontab。
另一种解决方案是将运行此脚本的用户添加到拥有 /etc/shadow 的组中
usermod -a -G shadow yourusernamehere
Run Code Online (Sandbox Code Playgroud)