실행 파일에 set-user-id 비트가 켜져 있다고 가정합니다.
프로세스가 실행 파일을 실행할 때 유효 사용자 ID를 실행 파일의 소유자 사용자 ID로 변경합니다.뒤쪽에커널은 파일 액세스 테스트를 통해 파일이 실행 가능한지 확인합니다. 바라보다 https://stackoverflow.com/questions/41456225/how-and-when-does-exec-change-the- Effective-user-id-when-the-set-user-id-is-s 그리고 프로그램 파일에서 set-user-ID의 용도는 무엇입니까?
이는 프로세스의 원래 유효 사용자 ID를 기반으로 한 테스트를 통과한 경우에도 실행 파일의 소유자 사용자 ID가 커널에서 수행한 파일 액세스 테스트를 통과하지 못할 수 있다는 의미입니까?
일반적으로 실행 파일의 소유자에게 실행 권한이 없다는 것이 말이 됩니까?
감사해요.
답변1
어떻게 작동하는지 전혀 모르겠습니다(주로 이 구성이 어떤 식으로든 사용되는 것을 본 적이 없기 때문입니다). 내 생각에는 SUID가
seteuid()
시작 프로세스의 마지막 부분(프로그램 자체로 실행이 전송되기 직전)에 효과적으로 호출되기 때문에 문제가 되지 않을 것 같습니다.뒤쪽에실행을 위해 파일이 로드되므로 검사가 발생하자마자(적어도 Linux에서는 데이터가 메모리에 로드되기 전에 검사가 발생합니다).의미가 무엇을 의미하는지에 따라 다릅니다. 소유자가 실행 가능 비트를 직접 설정할 수 있기 때문에(이를 방지하기 위한 추가 필수 액세스 제어가 없다고 가정) 기능적으로는 아무 작업도 수행하지 않으므로 실제로는 사실이 아닙니다. 유용한 의미에서 의미가 있는지 여부에 대해서는 소유자가 실행 권한을 갖지 않고 다른 사용자가 실행 권한을 갖는 것이 의미가 있는 상황을 생각할 수 없으므로 마찬가지로 아니오라고 말하고 싶습니다.