![setuid 프로그램이 sudo를 통해 실행되는 경우 해당 프로그램의 유효 권한은 무엇입니까?](https://linux55.com/image/201386/setuid%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%B4%20sudo%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%EC%8B%A4%ED%96%89%EB%90%98%EB%8A%94%20%EA%B2%BD%EC%9A%B0%20%ED%95%B4%EB%8B%B9%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%98%20%EC%9C%A0%ED%9A%A8%20%EA%B6%8C%ED%95%9C%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
setuid
저는 이 드릴이 어떻게 작동하는지, 어떻게 작동하는지 에 대한 많은 질문과 답변을 읽었고 sudo
, 이해한다고 생각합니다.
하지만 sudo를 통해 프로그램을 실행할 때 무슨 일이 일어나는지 알 수 없습니다.프로그램 자체에서 setuid
비트를 설정 한 경우. 이 질문은 다음 예를 통해 가장 잘 설명됩니다.
해당 시스템에는 라는 사용자가 있습니다 user1
. 사용자가 원하는 다른 사용자로서 프로그램을 실행할 수 sudo
있도록 시스템이 올바르게 설치 및 구성되었습니다. 또한 합계 비트를 소유 하고 설정하는 root
프로그램이 있습니다 ./usr/bin/exampleprog
root:wheel
setuid
setgid
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
됩니까 ?user1
root
답변1
id
프로그램을 어딘가에 복사하고 권한을 변경하여 실험해 볼 수 있습니다. 그러면 exampleprog
루트의 유효 uid와 해당 실제 uid가 표시됩니다 user1
.
user1
로그인하여 다음을 실행하면 어떤 일이 일어날지 생각해 보십시오 exampleprog
. 후자는 suid root이므로 루트의 유효 uid로 실행하기를 원합니다. 를 통해 프로그램을 실행할 때도 마찬가지입니다 sudo
.