2012-11-18 3 views
0

나는 다음과 같은 내용으로 다음 "루트 파일"이 :Linux에서 Set-user-id 비트는 어떻게 작동합니까?

$ ls -l root-file 
-rwsr-sr-x 1 root root 15 Nov 18 02:20 root-file 

설정 사용자-ID 비트가이 설정되어 있기 때문에 :

$ cat root-file 
#!/bin/bash 
echo $EUID 
id 

다음이 파일에 대한 권한은 이 파일을 실행하면 비 루트 사용자가 실행하더라도 유효 UID가 0으로 표시됩니다 (set-user-id 비트는 프로세스가 유효한 사용자 ID로 실행되도록하기 때문에). 파일 소유자 (이 경우 root). 그러나 대신 루트가 아닌 쉘에서 "root-file"을 실행할 때 다음 출력을 얻습니다.

$ ./root-file 
1000 
uid=1000(chanakya) gid=1000(chanakya) groups=1000(chanakya),4(adm),20(dialout),24(cdrom),46(plugdev),105(lpadmin),119(admin),122(sambashare) 

이 파일은 유효한 사용자 ID가 0으로 실행되지 않습니다. 이유는 무엇입니까?

+0

루트가 파일을 소유하고 있습니까? SUID 비트는 사용자 ID를 소유자의 사용자 ID로 설정합니다. 소유자의 ID는 루트가 아니지만 (대부분의 SUID 프로그램은 루트에서 소유하고 있습니다). –

+0

예, root가 파일을 소유합니다. "ls -l root-file"의 출력을보십시오. – gjain

답변

1

당신이 쉘 스크립트에 setuid를 사용할 수 없습니다 ...

당신이 절대적으로 setuid를 체크 아웃을 사용해야 할 경우 http://isptools.sourceforge.net/suid-wrap.html

또한 일부 사용자 지정 sudo는 구성을 사용하여 설정 될 수있는이 같은

일반적으로 뭔가 ...

관련 문제