스크립트에서 setuid를 활성화하면 보안 문제가 있으므로 기본적으로 비활성화되어 있지만 실행 파일에서는 작동 할 것으로 예상합니다. 이 게시물에 설명 된 지침에 따라 uid를 출력으로 보여주는 실행 파일을 만들었습니다. 쉘 스크립트에서 setuid 허용
그러나 실행 전후에 동일한 uid (1000)를 반환합니다 sudo chmod +s ./setuid-test
. 이것은 setuid가 실행 파일에 아무런 영향을 미치지 않는다는 것을 의미한다고 생각합니다. 왜, 어떻게 해결합니까?
소스 코드 :
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
printf("%d", geteuid());
return 0;
}
내장 및 실행
$ gcc -o setuid-test setuid-test.c
$ ./setuid-test
1000
$ sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test
$ ./setuid-test
1000
실행할 때 ls -la
이것이 내가 얻는 것입니다.
me@me:~$ ls -la setuid-test
-rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
me@me:~$ ls -la setuid-test
---- returns -----rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
df .
마운트 지점을 찾으려면 디렉토리를 입력 한 다음를 누르십시오 mount | grep nameofmountpoint
. 거기에 nosuid
깃발이 있습니까?