chmod 644가 디렉토리에 액세스 할 수없는 이유는 무엇입니까?


8

다양한 권한이 혼합 된 미디어 파일 (644 만 필요)이 있습니다. 일부는 그룹 또는 전역 쓰기 가능하므로 안전하다고 생각하여 644로 다시 되돌릴 것이라고 생각했습니다.

문제는 디렉토리 계층 구조가 있으며이 디렉토리에서 포착 된 모든 디렉토리에 대해 다음과 같이 ls -l표시됩니다.

d????????? ? ? ? ?            ? Dirname

내가 744로 chmod하면 고정되어 있습니다.

내 질문은 : 무슨 일이야? 디렉토리는 실행 가능해야합니까?

답변:


7

chmod권한과 관련 하여 맨 페이지에 언급 된대로 :

영향을받는 사용자의 문자 rwxXst 선택 파일 모드 비트 : 읽기 (r), 쓰기 (w), 실행 (또는 디렉토리 검색) (x), 파일이 디렉토리이거나 이미 일부에 대한 실행 권한이있는 경우에만 실행 / 검색 사용자 (X)

폴더의 실행 비트는 위에서 '검색'권한으로 설명되었습니다. 즉, 실행 비트를 사용하면 파일 브라우저에서 폴더에 액세스하거나 cd명령 을 실행 하거나 ls ~/folder폴더에 파일을 나열하기 위해 실행하여 터미널에서 폴더로 이동할 수 있습니다.

폴더는 대한 실행 가능해야 소유자 수퍼 유저는 여전히 사용할 때와 같은 폴더에 액세스 할 수있을 것입니다 있지만, sudo모든 파일이나 디렉토리에 액세스하거나 삭제할 수 있습니다합니다. 또한 디렉토리 및 파일 권한은 이 유용한 기사의 Stackoverflow에서 자세히 설명 합니다 .

폴더를 '실행'한다고해서 실행 바이너리 나 스크립트가 실행될 때와 같은 코드 나 명령을 실제로 실행하고있는 것은 아닙니다.

가정용 데스크탑 사용자 (아마도 서버는 아님)의 경우, 대부분의 폴더 $HOME에는 사용자, 그룹 및 기타 사용자에 대해 실행 권한이 설정되어 있습니다 stat ~/myfolder(아래 발췌).

Access: (0755/drwxr-xr-x)  Uid: ( 1000/    mike)   Gid: ( 1000/    mike)

폴더 표준 사용 권한 $HOME은 755 또는 775이며 파일 사용 권한 은 644입니다. 그러나 나머지 파일 시스템은 다릅니다. 다시, 폴더는 소유자를위한 실행 비트를 가져야합니다. 그렇지 않으면 폴더가 폴더를 열 수 없습니다. chmod상황을 빠르게 엉망으로 만들 수 있으므로 권한을 변경할 때 특히 재귀 적으로 권한을 변경할 때는 주의 해야합니다.

자세한 내용 man chmodUbuntu 맨 페이지 온라인 또는 이 문서의 수퍼 유저를 참조하십시오 .


0

디렉토리 x를 열려면 비트 세트 (해당 비트가 검색 비트로 표시되는 디렉토리)가 필요합니다 . 많은 사람들 chmod -R이 전체 폴더 에서 실행 가능한 비트를 제거하면 더 이상 액세스 할 수 없다는 것을 알게됩니다. 이 문제를 해결하기 위해 tree폴더 세트 만 가져오고 모든 파일을 실행 파일로 설정하는 악몽을 피할 수 있습니다 (tree 옵션은 -d List directories only.).

sudo tree -faid dirname | xargs -L1 -I{} sudo chmod +x "{}"

당신이없는 경우 tree:

find  dirname -type d -exec chmod +x {} 

경고!!! 이 점을 고려해야합니다.

  • 루트 /디렉토리 또는 시스템 디렉토리 에서 chmod 또는 chown 재귀를 사용 하면 OS가 손상됩니다 (실제로 /디렉토리 또는 시스템 디렉토리의 재귀 는 위험합니다)

  • 이것은 권한 대량을 설정하는 좋은 보안 관행이 아닙니다.


@Melebius 좋아 덕분에, 나는 기뻐요 우리는 이해에 온
에드워드 Florinescu에게
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.