디렉토리에 고정 비트가 설정되어 있지만 실행 비트가 설정되어 있지 않은 이유는 무엇입니까?

디렉토리에 고정 비트가 설정되어 있지만 실행 비트가 설정되어 있지 않은 이유는 무엇입니까?

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:

끈적한 디렉토리

"고정 비트"가 설정된 디렉터리는 추가 전용 디렉터리, 더 정확하게는 파일 삭제를 제한하는 디렉터리가 됩니다. 사용자는 디렉터리에 대한 쓰기 권한이 있고 파일 소유자, 디렉터리 소유자 또는 수퍼유저인 경우에만 고정 디렉터리에 있는 파일을 삭제하거나 이름을 바꿀 수 있습니다. 이 기능은 공개적으로 쓰기가 가능해야 하는 /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 및 GID를 사용하여 디렉터리에 액세스할 수 있습니다 crontab. crontab세트로 실행하는 것보다 약간 더 안전 합니다.UID사용자를 서로 분리하기 때문에 권한이 부여됩니다.

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

이제 일반적으로 디렉터리의 파일은 해당 소유자가 소유하고 이름을 지정하므로 crontab사용자 자신의 crontab 삭제만 허용하면 문제가 발생하지 않습니다. 이와 같이 파일 권한을 설정하면 프로그램의 오류를 방지할 수 있습니다.그리고사용자의 실제 UID뿐만 아니라 사용자의 실제 UID에 액세스하는 것과 관련이 있도록 만드세요.이름.

관련 정보