setuid 및 setgid의 개념을 완전히 이해하려고 노력하고 있지만 실제로 권한을 승격하는 방법을 잘 모르겠습니다. 예를 들어 보겠습니다.
사용자
userA (groups: userA groupA)
userB (groups: userB groupB GroupC)
실행 가능 파일
Permission owner group filename
-rws-----x userA groupD file
-rwsrws--x userA groupD file2
file
userB가 및 을 실행하는 경우 file2
실행 파일은 어떤 그룹 권한을 갖게 됩니까? 실행 파일에 사용자/그룹 권한이 있는지 확실하지 않습니다.둘 다호출자와 파일 소유자 또는 권한이 "대체"되었는지 여부.
setuid와 setgid는 일반적으로 "catch-all" 애플리케이션을 호출하는 데 사용되므로 이것이 어리석은 예라는 것을 알고 있지만 이 예가 setuid와 setgid가 실제로 작동하는 방식에 대한 더 나은 개념을 제공하기를 바랍니다.
답변1
setuid
유효 UID 설정UID.
setgid
유효 GID 설정에지드.
두 경우 모두 호출자 uid와 gid는 그대로 유지됩니다. 따라서 대략적으로 말하면 호출자 uid 및 (활동) gid 외에 uid/gid도 얻게 됩니다.
이를 잘 구별해 주는 프로그램이 있습니다.
시스템에 로그인한 후 su
루트를 실행하고 a를 실행하면 who am i
"이전" 계정이 표시됩니다.
su
이 suid 바이너리 중 하나이며 변경될 것입니다.UID.
답변2
내가 아는 한:
실행 파일은
setuid
실행 파일의 소유자이자 호출자의 그룹으로 실행됩니다. 실행 파일 소유자에 대한 그룹 권한이 없습니다.실행
setgid
파일은 호출자로 실행됩니다. 그룹 세트에는 호출자의 그룹과 실행 파일의 그룹이 포함됩니다.
(물론 우분투 10.04에서 테스트했습니다.)