it-swarm-ko.tech

하위 디렉토리에 액세스 할 때 상위 디렉토리의 권한이 중요합니까?

제한 권한이있는 루트 폴더가있는 경우 600이라고 가정하고 하위 폴더/파일에 777 권한이 있으면 루트 폴더가 600 인 경우에도 모두 하위 파일을 읽거나 쓰거나 실행할 수 있습니까?

168
Ken Li

정확한 규칙은 다음과 같습니다. 디렉토리에 대한 실행 권한이있는 경우에만 디렉토리를 탐색 할 수 있습니다.

예를 들어 dir/subdir/file에 액세스하려면 dirdir/subdir에 대한 실행 권한과 원하는 액세스 유형에 대한 file에 대한 권한이 필요합니다. 모퉁이로 들어가면 상대 경로를 통해 파일에 액세스하기 위해 현재 디렉토리에 대한 실행 권한이 필요한 것이 보편적인지 확실하지 않습니다 (Linux의 경우).

파일에 액세스하는 방법이 중요합니다. 예를 들어 /foo/bar에 대한 실행 권한이 있지만 /foo에 대한 실행 권한이 있지만 현재 디렉토리가 /foo/bar 인 경우 /foo/bar의 파일에 액세스 할 수 있습니다. 상대 경로이지만 절대 경로를 통하지 않습니다. 이 시나리오에서는 /foo/bar로 변경할 수 없습니다. 더 많은 권한을 가진 프로세스는 권한을 가지기 전에 cd /foo/bar를 수행했을 것입니다. 파일에 여러 개의 하드 링크가있는 경우 파일 액세스에 사용하는 경로에 따라 액세스 제한이 결정됩니다.

심볼릭 링크는 아무 것도 변경하지 않습니다. 커널은 호출 프로세스의 액세스 권한을 사용하여이를 통과합니다. 예를 들어, symdir 디렉토리에 대한 심볼릭 링크 인 경우 sym/foo에 액세스하려면 dir에 대한 실행 권한이 필요합니다. 심볼릭 링크 자체에 대한 권한은 OS 및 파일 시스템에 따라 중요하거나 중요하지 않을 수 있습니다 (일부는 존중하고 일부는 무시).

루트 디렉토리에서 실행 권한을 제거하면 사용자가 디렉토리 트리의 일부 (보다 특권이있는 프로세스로 변경되어야 함)로 효과적으로 제한됩니다. 이를 위해서는 액세스 제어 목록을 사용해야합니다. 예를 들어 //homejoe (setfacl -m user:joe:0 / /home)로 제한되지 않고 /home/joejoe 's 인 경우 홈 디렉토리 인 경우 joe는 나머지 시스템에 액세스 할 수 없습니다 (/bin/sh로 쉘 스크립트 실행 또는 /lib에 액세스해야하는 동적 링크 바이너리) 실제 사용을 위해 더 깊이 들어가야합니다 (예 : setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib).

디렉토리에 대한 읽기 권한은 항목을 열거 할 권리를 부여합니다. 읽기 권한을 부여하지 않고 실행 권한을 부여하는 것이 유용한 경우가 있습니다. 항목 이름은 해당 항목에 액세스하기위한 비밀번호 역할을합니다. 실행 권한이 없으면 디렉토리에 읽기 또는 쓰기 권한을 부여하는 데 사용할 수 없다고 생각합니다.

아니요. 루트 폴더 권한은 하위 파일 권한을 제한합니다. 시도해 볼 수 있습니다.

$ mkdir rootdir
$ touch ./rootdir/childfile
$ chmod 777 ./rootdir/childfile
$ chmod 600 rootdir
$ cat ./rootdir/childfile

나는 이것을 얻는다 :

$ cat: ./rootfolder/childfile: permission denied
34
goovim

부모 디렉토리가 아닌 경우에도 자식 디렉토리를 쓰기 가능하게 만들 수 있습니다. 나는 그룹을 위해 이것을한다.

예 : 부모 디렉토리는 그룹 코더가 소유합니다.

drwxr-sr-x

자식 디렉토리

drwxrwsr-x

코더 그룹의 모든 구성원은 여전히 ​​하위 디렉토리에는 쓸 수 있지만 상위 디렉토리에는 쓸 수 없습니다.

4
Kemin Zhou

상위 디렉토리에 대한 실행 권한이없는 경우에도 파일에 액세스하기위한 하드 링크를 작성할 수 있습니다. 그러나 여기서 중요한 것은 부모 디렉토리에 대한 실행 권한을 잃기 전에 하드 링크를 만들어야한다는 것입니다.

$ ln foo/bar/test_privs privs_test_checking
1
Kamal