Wikipedia setuid 예: 4700

Wikipedia setuid 예: 4700

내가 읽고 있는 내용은Wikipedia의 setuid.예시 중 하나다음과 같이:

4700

"root"가 소유한 실행 파일의 SUID

"tails"라는 사용자가 파일 실행을 시도했습니다. 파일 소유자는 "루트"이고 소유자의 권한은 실행 가능하므로 파일은 루트로 실행됩니다.

SUID가 없으면 그룹이나 다른 사용자가 파일에 대한 권한을 부여할 수 없으므로 사용자 "tails"는 파일을 실행할 수 없습니다. 기본 사용법은 바이너리를 통해 볼 수 있습니다 /usr/bin/passwd.

난 이해가 안 돼요. 사용자가 파일 및 그룹의 소유자가 아니고 다른 권한을 사용할 수 없기 때문에 어떻게 파일을 "tails" 실행합니까?

나는 이 시나리오를 재현하려고 노력했고 실제로는 다음과 같습니다.

$ su -c 'install -m 4700 /dev/null suidtest'
$ ls -l suidtest
-rws------ 1 root root 0 21 dec 07:48 suidtest*
$ ./suidtest
bash: ./suidtest: Permission denied

권한이 있는 경우에만 이 기능을 사용할 수 있습니다 4755. 또한 위키피디아 예시에서 언급한 기본 사용( )에는 /usr/bin/passwd실제로 4755권한이 있습니다.

이 예가 맞습니까? 제가 놓친 부분이 있습니까? 아니면 버그입니까?

답변1

당신 말이 맞습니다. Wikipedia 기사는 틀렸습니다. 아래 예를 참조하세요.

$ ls -l /usr/bin/passwd 
-rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd
$ sudo cp /usr/bin/passwd /tmp/
$ cd /tmp
$ ls -l passwd
-rwxr-xr-x 1 root root 30768 Dec 21 07:43 passwd
$ sudo chmod 4700 passwd
$ ls -l passwd
-rws------ 1 root root 30768 Dec 21 07:43 passwd
$ ./passwd
bash: ./passwd: Permission denied
$ sudo chmod 4701 passwd
$ ./passwd 
Changing password for user vagrant.
Changing password for vagrant.
(current) UNIX password: 
$ 

관련 정보