다른 사람의 setuid 비트를 설정할 수 없습니다. 왜? 안전 잠금장치가 있나요?
$ ls -l
-rwxrwxr-x 1 allexj allexj 16784 Mar 11 17:30 a.out
$ chmod o=+s a.out
$ ls -l
-rwxrwx--- 1 allexj allexj 16784 Mar 11 17:30 a.out
답변1
man chmod
setuid 및 setgid에 대한 전용 장이 있습니다.
하지만 먼저 이름을 자세히 살펴보겠습니다.너번호, 설정GID.
다른 사람들에게는 설정되어야합니다오이드 비트. 그러나 그런 점을 갖는 것은 아무런 의미가 없기 때문에 존재하지 않습니다.
답변2
전통적인 Unix 권한은 12비트로 구성됩니다.
user group other extra
0 0 0 0 0 0 0 0 0 0 0 0
r w x r w x r w x s s t
이러한 추가 비트를 사용하면 세 가지 "추가 모델"을 활성화할 수 있습니다.[1]:
- 첫 번째 비트(보통 소문자 s로 설명됨)는 다음과 같습니다.설정값비트를 사용하여 실행 파일을 실행하면 모든 사용자가 자신의 비트를 가질 수 있습니다.EU 사용자 ID[2]실행 파일 소유자의 UID로 설정합니다.
- 두 번째 숫자(소문자 s로도 표시됨)는 다음과 같습니다.설정setuid 비트와 효과 및 의미가 동일하지만 setuid와 달리 그룹 및 비트에 적용됩니다.이지드모든 사용자가 자신의 그룹을 파일 소유자의 그룹으로 설정한 것처럼 효과적으로 실행 파일을 실행할 수 있도록 허용합니다.
- 마지막 세 번째는끈끈한 비트[삼](제한된 삭제 플래그라고도 함) 이는 거의 항상 디렉토리에 사용되며 누구나 그 안에 파일을 만들 수 있도록 허용하고 파일이 해당 소유자에게 "고정"되도록 보장하여 누구도(루트 제외) 파일을 삭제할 수 없도록 합니다. 최신 시스템에서 가장 일반적으로 사용되는 것은 다음과 같습니다./tmp목차. 누구나 디렉토리에 파일을 생성하고 삭제할 수 있으므로, 누구도 다른 사용자의 파일을 망칠 수 없도록 모든 사람이 디렉토리를 공유할 수 있습니다. 디렉토리의 경우 이 비트는 대부분의 Unix(및 Unix 계열) 시스템에서 기본적으로 동일한 동작을 갖습니다. 그러나 파일 사용은 다양한 Unix(및 Unix 유사) 시스템에서 균일하지 않습니다. 예를 들어 최신 Linux 커널은 이를 완전히 무시하는 반면 다른 시스템에서는 몇 가지 특별한 용도가 있을 수 있습니다.[4]
이제 현대 시스템에서 이러한 비트가 어떻게 작동하는지 알았으니 스스로에게 질문해 보십시오. 비트 12가 위의 동작에 특별히 사용되지 않은 경우 이를 "다른" 사용자에게 적용하면 setuid 비트의 동작은 어떻게 될까요? 그것은처럼 보입니까? 이는 setuid 및 setgit을 사용하면 분명합니다. 그러나 "모든 사용자가 자신의 유효 사용자 ID를 다른 사용자의 ID로 가질 수 있도록 허용합니다"는 무엇을 의미합니까? 나에게 그것은 0으로 나누는 것처럼 보이는데, 이는 논리적으로 말이 되지 않습니다. 왜냐하면 대답은 "유효한 사용자 ID는 동시에 가능한 다른 모든 사용자 ID일 것입니다"일 수 있기 때문입니다. 안전 잠금 장치나 힌트 없이 이와 같은 것을 갖는 것은 의미가 없습니다. 원래 Unix 디자이너는 아마도 그런 어리석은 일을 하는 것이 별로 의미가 없다고 판단하고 이를 위한 더 나은 응용 프로그램을 찾기로 결정했을 것입니다. (그들은 권한에 11비트를 사용할 수도 있었지만 실제로는 모두 필요하다고 생각했습니다. 12 왜냐하면 그들은 그것으로 뭔가 유용한 일을 할 수 있었고, 결국 그렇게 했고, 짝수 비트를 사용하는 것이 더 쉬웠기 때문입니다.
도움이 되었기를 바랍니다.