setuid 프로그램이 sudo를 통해 실행되는 경우 해당 프로그램의 유효 권한은 무엇입니까?

setuid 프로그램이 sudo를 통해 실행되는 경우 해당 프로그램의 유효 권한은 무엇입니까?

setuid저는 이 드릴이 어떻게 작동하는지, 어떻게 작동하는지 에 대한 많은 질문과 답변을 읽었고 sudo, 이해한다고 생각합니다.

하지만 sudo를 통해 프로그램을 실행할 때 무슨 일이 일어나는지 알 수 없습니다.프로그램 자체에서 setuid비트를 설정 한 경우. 이 질문은 다음 예를 통해 가장 잘 설명됩니다.

해당 시스템에는 라는 사용자가 있습니다 user1. 사용자가 원하는 다른 사용자로서 프로그램을 실행할 수 sudo있도록 시스템이 올바르게 설치 및 구성되었습니다. 또한 합계 비트를 소유 하고 설정하는 root프로그램이 있습니다 ./usr/bin/exampleprogroot:wheelsetuidsetgid

root@morn ~ # dir /usr/bin/exampleprog
-rwsr-sr-x 1 root wheel 92K 2017-11-16 23:42 /usr/bin/exampleprog

이제 로그인했어루트 사용자로그리고 다음 명령을 실행합니다:

root@morn ~ # sudo -u user1 /usr/bin/exampleprog

그러면 어떻게 되나요? exampleprog루트로 실행 중 입니까 user1(주어진 옵션을 사용하여 예상한 대로 sudo) 아니면 루트로 실행 중입니까(실행 파일이 루트 소유이고 해당 setuid비트가 설정되어 있기 때문에)?

일을 더 복잡하게 만들기 위해 역시 /usr/bin/wrapper속하는 추가 프로그램이 있지만root:wheel아니요그리고 setuid위치 setgid:

root@morn ~ # dir /usr/bin/wrapper
-rwxr-xr-x 1 root wheel 15K 2017-11-16 23:42 /usr/bin/wrapper

프로그램이 실행 wrapper되면 어떤 시점에서 실행(생성)됩니다 /usr/bin/exampleprog.

이제 다음을 실행합니다.

root@morn ~ # sudo -u user1 /usr/bin/wrapper

wrapper생성 되면 후자가 다음으로 실행 exampleprog됩니까 ?user1root

답변1

id프로그램을 어딘가에 복사하고 권한을 변경하여 실험해 볼 수 있습니다. 그러면 exampleprog루트의 유효 uid와 해당 실제 uid가 표시됩니다 user1.

user1로그인하여 다음을 실행하면 어떤 일이 일어날지 생각해 보십시오 exampleprog. 후자는 suid root이므로 루트의 유효 uid로 실행하기를 원합니다. 를 통해 프로그램을 실행할 때도 마찬가지입니다 sudo.

관련 정보