setuid와 setgid가 혼동됨

setuid와 setgid가 혼동됨

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

fileuserB가 및 을 실행하는 경우 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에서 테스트했습니다.)

관련 정보