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

関連情報