次のコマンドは、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