Perl - /etc/shadow - 权限被拒绝

Perl - /etc/shadow - 权限被拒绝

以下命令由非 root 用户执行:

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

正在发出拒绝的许可。

这表明存在一些权限问题。

这样的命令可以执行吗?

我尝试在执行此命令的脚本上设置 setuid 和组 id,但没有成功。

操作系统是Solaris 10。

答案1

相应地,非 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);

然后像这样运行脚本

$ 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

那么该怎么办呢?一种简单的解决方案是使用 sudo 或通过 root 用户的 crontab 以 root 身份实际运行 perl 脚本。

另一个解决方案是将运行此脚本的用户添加到拥有 /etc/shadow 的组中,如下所示

usermod -a -G shadow yourusernamehere

答案2

使用sudo

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

相关内容