chmod o=rwx는 고정 비트를 제거하지만 chmod u=rwx 및 chmod g=rwx는 suid 및 sgid를 제거하지 않는 이유는 무엇입니까?

chmod o=rwx는 고정 비트를 제거하지만 chmod u=rwx 및 chmod g=rwx는 suid 및 sgid를 제거하지 않는 이유는 무엇입니까?

내 명령에 문제가 있습니다 chmod. sgid, suid 및 끈적한 비트가 포함된 디렉토리가 있습니다. 그런 다음 를 실행하면 sgid chmod u=rwx {dirname}chmod g=rwx {dirname}suid가 여전히 열려 있습니다. 하지만 chmod o=rwx끈적한 비트 제거를 실행하면 . 왜 이런 일이 발생하는지 설명할 수 있는 사람이 있나요?

답변1

man chmod데비안 10 부터 :

디렉토리의 경우 chmod는 명시적으로 다른 비트를 지정하지 않는 한 set-user-ID 및 set-group-ID 비트를 유지합니다. u+s앰퍼샌드 및 기타 부호 모드를 사용하여 이러한 비트를 설정하거나 지울 수 있습니다 g-s. 숫자 모드가 있는 디렉터리에 대해 이러한 비트를 지우려면 추가 선행 0이 필요하거나 선행 = like 00755, 또는=755

끈적한 비트에 대해서는 그러한 명시적인 보증이 이루어지지 않습니다. 따라서 동작은 문서와 일치합니다.

chmod이런 식으로 설계되었는지는 더 어려운 질문입니다.

이는 사용자 ID 설정이나 그룹 ID 비트 설정이추가 권한 부여그리고 디렉토리의 고정 비트로 인해추가 제한: suid/sgid 비트가 디렉토리에서 실수로 제거된 경우 사용자는 해당 비트를 다시 넣을 수 없으며(예: 사용자가 소유한 디렉토리 및 사용자가 구성원이 아닌 그룹) 요청해야 할 수도 있습니다. 시스템 관리자의 도움을 받지만 끈적임이 있는 경우 사용자는 원하는 경우 간단히 다시 켤 수 있습니다.

관련 정보