setuid가 어떻게 작동하는지 이해하려고 노력 중입니다. 지금까지 제가 이해한 바에 따르면 setuid가 적용된 파일을 실행하는 프로세스는 실제로 누가 실행했는지에 관계없이 파일 소유자가 해당 파일을 실행한 것처럼 실행됩니다. 하지만 왜 모든 사람에게 실행 권한을 설정하지 않는 걸까요? (결국 이것이 실제로 일어나고 있는 일이라고 생각합니다.) 아마도 여기서 분명한 것을 놓치고 있는 것 아닐까요?
답변1
예, 당신은 분명한 것을 놓치고 있습니다. cat
(또는 ls
, sed
, awk
, vi
또는 기타 일반 프로그램)을 실행하면 해당 프로그램을 직접 실행하므로 프로그램/프로세스에는 사용자 권한이 적용됩니다. 예를 들어 setuid 프로그램을 실행하면 passwd
프로세스가 수정될 수 있도록 루트의 UID로 실행됩니다 /etc/shadow
(자신의 UID로 실행하면 프로세스에 액세스할 수 없으며 읽을 수도 없습니다).