Perl - /etc/shadow - 권한이 거부되었습니다.

Perl - /etc/shadow - 권한이 거부되었습니다.

다음 명령은 루트가 아닌 사용자가 실행합니다.

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

허가가 거부되었습니다.

이는 일부 권한 문제를 나타냅니다.

그러한 명령을 실행할 수 있습니까?

이 명령을 실행하는 스크립트에서 setuid 및 그룹 ID를 설정해 보았으나 성공하지 못했습니다.

운영 체제는 솔라리스 10입니다.

답변1

따라서 루트가 아닌 사용자는 섀도우 파일을 읽을 수 없으므로 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를 사용하거나 루트 사용자의 crontab을 통해 루트로 Perl 스크립트를 실행하는 것입니다.

또 다른 해결책은 다음과 같이 /etc/shadow를 소유한 그룹에 이 스크립트를 실행하는 사용자를 추가하는 것입니다.

usermod -a -G shadow yourusernamehere

답변2

사용 sudo:

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

관련 정보