프로그램 파일에서 set-user-ID의 용도는 무엇입니까?

프로그램 파일에서 set-user-ID의 용도는 무엇입니까?

APUE에서

프로그램 파일을 실행할 때 프로세스의 유효 사용자 ID는 일반적으로 실제 사용자 ID입니다. 그러나 파일의 모드 단어( st_mode)에 set-user-ID 비트를 설정할 수도 있습니다. 이는 "이 파일이 실행될 때 프로세스의 유효 사용자 ID를 파일 소유자( st_uid)로 설정합니다." 를 의미합니다. '

예를 들어, 파일 소유자가 수퍼유저이고 파일의 set-user-ID 비트가 설정된 경우프로그램 파일이 프로세스로 실행되면 슈퍼유저 권한을 갖습니다..이는 파일을 실행하는 프로세스의 실제 사용자 ID와 관계없이 발생합니다.. 예를 들어, 누구나 자신의 비밀번호를 변경할 수 있는 UNIX 시스템 프로그램(1)이 passwdSet User ID 프로그램입니다. 이는 프로그램이 일반적 으로 수퍼유저만 쓸 수 있는 /etc/passwd파일인 암호 파일에 새 암호를 쓸 수 있도록 하기 위해 필요합니다 . /etc/shadow다른 사용자에 대해 set-user-ID를 실행하는 프로세스는 종종 추가 권한을 가정하므로 신중하게 작성해야 합니다.

프로그램 파일에 설정된 사용자 ID 비트가 설정되어 있다고 가정합니다.

프로세스의 유효 사용자 ID가 파일 소유자로 변경되면,앞으로또는뒤쪽에커널은 파일 액세스 테스트를 통해 프로세스가 파일을 실행할 수 있는지 확인합니다.

  • "이전"이라면 프로세스의 유효 사용자 ID가 먼저 파일의 소유자로 변경되므로 커널은 프로세스가 파일을 실행할 수 있는지 결정하기 위해 항상 파일 액세스 테스트를 통과하지 않습니까?

  • "after"인 경우 커널은 파일 액세스 테스트를 통해 프로세스가 파일을 실행할 수 있다고 결정하므로 프로세스에는 파일 소유자와 일치하는 유효한 ID가 있어야 하며 파일에는 권한 비트도 설정되어 있어야 합니다. 그렇다면 프로세스의 유효 사용자 ID를 파일 소유자로 변경해야 하는 이유는 무엇입니까?

감사해요.

관련 정보