다른 사람이 보관 한 보관소가 있는데 다운로드 한 후 자동으로 추출 된 파일 내에서 파일 시스템의 분기를 변경하여 읽기 액세스 권한을 얻고 싶습니다. (아카이브 작성 방법을 변경할 수 없습니다).
이 스레드를 살펴 보았습니다. chmod : 다른 사용자와 마찬가지로 이미 실행 권한이있는 파일에만 반복적으로 실행 권한을 추가하는 방법 .
디렉토리는 원래 여러 개의 잘못된 플래그와 함께 제공되며 다음과 같이 나타날 수 있습니다.
drwx------
d---r-x---
drwxrwxr-x
dr--r-xr--
그것들은 내가 지금까지 발견 한 몇 안되는 것이지만 더 많을 수 있습니다.
find
x
권한 없이 디렉토리를 보려고 할 때 오류가 발생하여에 전달하지 않습니다 chmod
. 내가 지금까지 한 일은 상위 디렉토리에 대한 권한을 수동으로 변경 한 다음 하위 디렉토리로 이동하여 동일하게 수행하는 것입니다. 그러나 이것은 많은 노동입니다. 자동으로 수행 할 수있는 방법이 없습니까?
즉, 내가 지금하고있는 방법 :
하다:
$ chmod -R +x
$ chmod -R +r
오류가 없을 때까지
$ find -type f -exec chmod -x {} +
그러나 더 좋은 방법이 있어야합니다.
답변
디렉토리를 나열하려면 읽기 액세스와 액세스 실행이 필요합니다. 실행 액세스 권한 만있는 경우 디렉토리에서 항목 이름을 찾을 수 있지만 다른 정보는 없습니다 (유형도 아니므로 어떤 항목이 하위 디렉토리인지 알 수 없음). 이것은 나를 위해 작동합니다 :
find . -type d -exec chmod +rx {} \;
답변
chmod를 X
모드 문자 (대문자 X) 하여 디렉토리에 대해서만 실행 가능 플래그를 설정할 수 있습니다.
아래 예제에서 실행 가능 플래그는 지워지고 모든 디렉토리에 대해 재귀 적으로 설정됩니다.
~$ mkdir foo
~$ mkdir foo/bar
~$ mkdir foo/baz
~$ touch foo/x
~$ touch foo/y
~$ chmod -R go-X foo
~$ ls -l foo
total 8
drwxrw-r-- 2 wq wq 4096 Nov 14 15:31 bar
drwxrw-r-- 2 wq wq 4096 Nov 14 15:31 baz
-rw-rw-r-- 1 wq wq 0 Nov 14 15:31 x
-rw-rw-r-- 1 wq wq 0 Nov 14 15:31 y
~$ chmod -R go+X foo
~$ ls -l foo
total 8
drwxrwxr-x 2 wq wq 4096 Nov 14 15:31 bar
drwxrwxr-x 2 wq wq 4096 Nov 14 15:31 baz
-rw-rw-r-- 1 wq wq 0 Nov 14 15:31 x
-rw-rw-r-- 1 wq wq 0 Nov 14 15:31 y
약간의 설명 :
chmod -x foo
-eXecutable 플래그를 지우십시오.foo
chmod +x foo
– 설정된 실행 성 (eXecutable) 플래그를foo
chmod go+x foo
-위와 동일하지만 그룹 및 기타 사용자에 대해서만 플래그를 설정 하고 사용자를 터치하지 마십시오 (소유자) 권한을chmod go+X foo
-위와 동일하지만 디렉토리에만 적용되며 파일을 만지지 마십시오.chmod -R go+X foo
-위와 동일하지만, 모든 하위 디렉토리에 대해 재귀 적 으로 수행foo
답변
모든 권한을 동시에 변경하십시오.
chmod -R +xr