실행 가능 비트 없이 디렉토리에 고정 비트가 설정된 이유는 무엇입니까?

실행 가능 비트 없이 디렉토리에 고정 비트가 설정된 이유는 무엇입니까?

Ubuntu 14.04에서 디렉터리 내용을 나열하면 해당 디렉터리에 대한 다음 권한이 제공됩니다(관련 없는 열은 잘림) /var/spool/cron.ls -l

drwxrwx--T daemon daemon atjobs
drwxrwx--T daemon daemon atspool
drwx-wx--T root crontab crontabs

실행 가능 비트가 없는 디렉터리에 고정 비트를 설정하는 목적은 무엇입니까?

답변1

매뉴얼 페이지에서 sticky:

고정 디렉터리

`sticky bit'가 설정된 디렉토리는 추가 전용 디렉토리, 더 정확하게는 파일 삭제가 제한된 디렉토리가 된다. 고정 디렉터리에 있는 파일은 사용자에게 디렉터리에 대한 쓰기 권한이 있고 해당 사용자가 파일 소유자, 디렉터리 소유자 또는 수퍼유저인 경우에만 사용자가 제거하거나 이름을 바꿀 수 있습니다. 이 기능은 공개적으로 쓰기 가능해야 하지만 사용자가 서로의 파일을 임의로 삭제하거나 이름을 바꿀 수 있는 라이센스를 거부해야 하는 /tmp와 같은 디렉토리에 유용하게 적용됩니다.

모든 사용자는 고정 디렉터리를 만들 수 있습니다. 파일 모드 수정에 대한 자세한 내용은 chmod(1)를 참조하십시오.

결과적으로 고정 디렉터리에 있는 파일의 소유자만 파일을 제거할 수 있습니다. 테이블의 경우 cron이는 다음을 의미합니다.거기 들어가서 제거할 수 없어당신의cron 테이블을 선택하고 다음 중 하나로 교체하세요.나의디렉토리에 대한 쓰기 액세스 권한이 있더라도 선택합니다. 끈적끈적한 것도 이 때문이다 /tmp.

답변2

실행 가능 비트가 없는 디렉터리에 고정 비트를 설정하는 목적은 무엇입니까?

drwx-wx--T 2 root crontab 4096 Apr 24 15:00 /var/spool/cron/crontabs/

당신이보고있는 것은 데비안에서도 비슷합니다. 디렉토리하다소유자와 그룹에 대해 실행 가능한 비트가 설정되어 있어야 합니다. 소유자에게만 끈적이는 것은 의미가 없습니다. 정의에 따라 단 한 명의 사용자만 해당되기 때문입니다(그리고 어쨌든 소유자는 끈적이를 재정의하게 됩니다). 그러나 그룹의 경우 와 같은 누구나 쓸 수 있는 디렉터리의 경우만큼 중요합니다 /tmp. 즉, 일반 사용자는 다른 사용자에게 속한 파일을 제거할 수 없습니다.

그런데 왜 누군가가 그룹의 구성원이 될까요 crontab?

물론 crontab을 수정할 수 있기 위해서입니다! 데비안은 crontabsetgid 권한으로 작동하므로 일반 사용자가 자신의 UID와 crontab. crontab세트로 실행시키는 것보다 약간 더 안전합니다.UID이후 사용자를 서로 분리하여 유지합니다.

-rwxr-에스rx 1 루트 crontab 36008 2015년 6월 11일 /usr/bin/crontab

이제 일반적으로 디렉터리의 파일은 해당 소유자가 소유하고 이름을 지정하며 crontab사용자 자신의 crontab만 제거할 수 있도록 허용하면 문제가 발생하지 않습니다. 이렇게 파일 권한을 설정하면 프로그램의 버그로부터 보호할 수 있습니다.그리고해당 UID뿐만 아니라 액세스하는 사용자의 실제 UID도 관련되게 만듭니다.이름.

관련 정보