2009-04-26 3 views
16

안녕하세요, 내가 이해하지 못하는 리눅스 디렉토리 권한에 관해서 2 가지 질문이 있습니다.리눅스 디렉토리 권한 추론하기

문서라는 폴더에서 실행 플래그를 제거했습니다. 그 후에 나는 그것에 CD를 사용할 수 없지만 여전히 "ls Documents"를 상위 디렉토리에서 수행 할 수 있으며 여전히 Documents 디렉토리의 파일을 나열합니다. 누락 된 x- 플래그가이 디렉토리를 읽지 못하지만?

그런 다음 디렉토리의 끈적 거리는 비트가 발명 된 이유를 알고 싶습니다. 사용자가 다른 사용자가 만든 임시 파일을 삭제할 수 없도록 사용되었다고 들었습니다. 그러나이 IMO는 파일을 삭제할 때이 디렉토리에 대한 권한이 필요하다는 규칙을 위반합니다. 규칙 시스템에 예외를 도입하는 대신 각 사용자에게 개별/tmp/디렉토리를 제공하지 않는 것이 어떻습니까? 나는 깃발이 무엇인지 알고 있지만 왜 발명 된 이유에 대해 알고 싶습니다.

답변

15

실행 비트 : 실행 비트가 이면이되어야합니다. 에 대한 읽기 권한은입니다. 디렉토리는 읽기 비트에 의해 제어됩니다. 루트로

:

는이 차이의 예를 들어이 쉘 대화를 참조

사용자로
 
# find foo/ -ls 
drwxr-xr-- 3 root  root   4096 Apr 27 12:57 foo/ 
drwxr-xr-x 2 root  root   4096 Apr 27 12:57 foo/bar 
-rw-r--r-- 1 root  root   0 Apr 27 12:57 foo/bar/file 

:

 
$ ls foo/ 
bar 
$ find foo/ -ls 
drwxr-xr-- 3 root  root   4096 Apr 27 12:57 foo/ 
find: foo/: Permission denied 
$ 

일반적인 사용은 다른 방법 내내 비록입니다 : 제거 읽기 권한은 있지만 탐색을 허용합니다. ~/public_html에 웹 서버를 허용하지만 --x을 설정하여 기본 인덱스 목록을 작성하도록 허용하지 않습니다.

스티커 비트 :이 디렉토리 그래서 /tmp 일 이내에 삭제에 대한 기본 규칙을 피하기 위해 정확히 발명되었다. /tmp/home과 다른 볼륨에 상주하거나 다른 할당량의 영향을받을 수 있습니다.

"임시 파일이 필요한 프로그램의 경우", "/ tmp의 파일이나 디렉토리는 호출간에 유지된다고 가정해서는 안됩니다"라는 경우 FHS codifies /tmp입니다.

개인적으로, 나는/tmp가 vi globals.h && make install 설치 절차로 간주되었을 때의 이교도 시대의 유산이라고 개인적으로 생각합니다. 요즘 프로그램은 $TMPDIR을 기려해야하며, 사용자 개인 시스템 관리 디렉토리를 가리켜 야합니다. 시스템 관리 디렉토리는 적어도 다시 부팅 할 때 정리해야합니다. tmpfile(3)과 같은 표준화 된 기능조차도 실제 경로를 지정하지는 않습니다. 중요하다고 생각되지만 compatibility and security concerns speaking for /tmp. 마지막 메일은 1999 년 이후이므로 변경 사항이있을 수 있습니다.

+0

X 비트 : x 비트가없는 디렉토리에서 파일을 읽을 수 있다면 왜 필요합니까? 어떤 작업을 통해 실제로이 디렉토리로 변경해야합니까? S 비트 : 물론 각 사용자에 대해/tmp/디렉토리에 하위 디렉토리를 만들 수 있습니다. 어쩌면/home/otto/tmp/->/tmp/otto /와 같은 하드 링크를 만들 수도 있지만, 여전히 잘 작동 할 것입니다. – codymanix

+0

나는 당신의 의견의 요점을 언급하기를 희망하는 대답을 개선했다. –

+0

사실 "바꾸는 것"이 ​​디렉토리 일 수는 없지만 이전에 할 수있는 모든 일을 여전히 할 수는 있습니다. 실제로는 무엇이 좋을까요? 나는 여전히 "ls foo /"와 "ls foo/bar"를 할 수 있습니다. "cat foo/bar/file"조차도 여전히 잘 작동합니다. 또한 파일을 삭제할 수 있습니다. 귀하의 견해에있어 가로 지르는 것과 읽는 것의 차이점은 무엇입니까? dir과 하위 디렉토리에있는 모든 파일을 나열 할 수 있다면 이론적으로 그 파일을 검색 할 수 있습니다. 그렇다면 왜 "일자리"를 찾지 못합니까? – codymanix

3

Sticky bit

오늘 세트, 디렉토리 내의 항목 이름 또는 항목의 소유자, 디렉토리의 소유자 또는 슈퍼 유저 만 삭제할 수 있습니다, 디렉토리에있는 끈적 끈적한 비트의 가장 일반적인 사용; 고정 비트 세트가 없으면 디렉토리에 대한 쓰기 및 실행 권한이있는 사용자는 소유자와 상관없이 포함 된 파일의 이름을 바꾸거나 삭제할 수 있습니다. 일반적으로 일반 사용자가 다른 사용자의 파일을 삭제하거나 이동하지 못하도록/tmp 디렉토리에 설정됩니다. 이 기능은 1986 년 4.3BSD에서 소개되었으며 오늘날 대부분의 최신 유닉스 시스템에서 발견된다.

또한 Solaris (Solaris 2.5 현재)는 실행 가능하지 않은 파일에 sticky 비트가 설정되어있을 때 특별한 동작을 정의합니다. 액세스 할 때 커널에 의해 캐시되지 않습니다. 이것은 대개 스왑 파일에 설정되어 파일에 대한 액세스가 시스템 캐시에서 더 중요한 데이터를 플러시하지 못하게합니다. 또한 벤치마킹 테스트에 종종 사용됩니다.

스티키 비트는 파일이 아직 마운트되지 않았 음을 나타 내기 위해 자동 마운트 장치에 의해 설정됩니다. 이렇게하면 ls와 같은 프로그램이 마운트 해제 된 원격 파일을 무시할 수 있습니다.

+0

내가 말한대로 나는 그것이 무엇을 위해 좋은지 이미 알았지 만, 내가 제안한 다른/청결한 해결책을 왜 사용했는지 알고 싶었다. 끈적 끈적한 비트는 망가진 디렉토리 구조에 대한 일시적인 해결책 일뿐입니다. – codymanix

+0

'레거시 행동'이라고합니다. 그것은/tmp가 정상적인 것으로 기록 된 스크립트가 깨지는 것을 막았습니다. –

5

구글 검색 등급이 높아서 우연히 발견되었습니다. 실행 비트 문제는 실제로 응답되지 않았습니다. 따라서

실행 비트가 디렉토리에 설정되어 있지 않으면 "통과 가능"하지 않습니다. 즉, 쉘과 파일 브라우저는 다음과 같이 설계되어야합니다. 이 기능을 파일 시스템 자체에서 시행 할 수는 없지만 그 디렉토리를 현재 디렉토리로 설정하지 못하도록하십시오. 파일 시스템 이 실행되지 않는 디렉토리에서 허용하지 않는 내용은 포함 된 파일의 이름보다 기타입니다. 따라서 해당 파일의 날짜 스탬프 또는 파일 권한이 없으며 해당 파일의 읽기 권한도 없습니다. 읽기 세트가있다.

0

CD 디렉토리의 경우 모드 0555 및 파일 0444이어야합니다. Unix 그룹은 역할로 생각할 수 있습니다. 역할이 보충 그룹입니다. 소유자가 아닌 경우 컨트롤은 필수 항목입니다. 당신은 자유 재량입니다. 각 경로 요소의 탐색/검색 권한이있는 경우에만 경로를 탐색 할 수 있습니다. 이것은 디렉터리 탐색에 취약한 Microsoft Windows와는 다릅니다. 레인보우 시리즈 "DoD Trusted Computer System Evaluation Criteria"를 구현하기 위해 고안되었습니다.