내 Debian 11 시스템에는 분명히 권한이 손상된 폴더가 있습니다. 루트로서 폴더가 사용자 ansible(소유자)에게 속해 있고 올바른 권한 세트(0644)를 가지고 있으므로 사용자가 파일을 쉽게 볼 수 있어야 함을 알 수 있습니다.
ansible@BACKUP:~$ sudo -s
root@BACKUP:/home/ansible# cd /opt/docker/config/opensearch/
root@BACKUP:/opt/docker/config/opensearch# ls -al
total 32
drw-r--r-- 3 ansible root 4096 Jun 8 15:38 .
drwxr-xr-x 7 ansible root 4096 Jun 8 13:28 ..
drw-r--r-- 2 ansible root 4096 Jun 8 14:14 certs
-rw-r--r-- 1 ansible root 14150 Jun 8 15:38 custom-opensearch.yml
-rw-r--r-- 1 ansible root 536 Jun 8 13:28 internal_users.yml
사용자 ansible로 돌아가지만 폴더에 액세스할 수 없습니다.
ansible@BACKUP:~$ whoami
ansible
ansible@BACKUP:~$ cd /opt/docker/config/opensearch/
-bash: cd: /opt/docker/config/opensearch/: Permission denied
또한 디렉터리를 나열하려고 할 때 파일 이름을 볼 수 있다는 점에서 이상한 출력이 표시되지만 그게 전부입니다.
ansible@BACKUP:~$ ls -al /opt/docker/config/opensearch/
ls: cannot access '/opt/docker/config/opensearch/custom-opensearch.yml': Permission denied
ls: cannot access '/opt/docker/config/opensearch/certs': Permission denied
ls: cannot access '/opt/docker/config/opensearch/.': Permission denied
ls: cannot access '/opt/docker/config/opensearch/internal_users.yml': Permission denied
ls: cannot access '/opt/docker/config/opensearch/..': Permission denied
total 0
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
d????????? ? ? ? ? ? certs
-????????? ? ? ? ? ? custom-opensearch.yml
-????????? ? ? ? ? ? internal_users.yml
운영 체제 버전:
ansible@BACKUP:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
이러한 권한을 수정하려면 어떻게 해야 합니까? 일반적인 용의자를 루트로 시도했습니다.
root@BACKUP:/home/ansible# chown -R ansible:root /opt/docker/config/opensearch/
root@BACKUP:/home/ansible# chmod -R 0644 /opt/docker/config/opensearch/
이들 사이에는 차이가 없습니다.
//편집 1: ls -alZ
출력 추가
root@BACKUP:/opt/docker/config/opensearch# ls -laZ
total 36
drw-r--r-- 3 ansible root ? 4096 Jun 8 15:59 .
drwxr-xr-x 7 ansible root ? 4096 Jun 8 13:28 ..
drw-r--r-- 2 ansible root ? 4096 Jun 8 14:14 certs
-rw-r--r-- 1 root root ? 399 Jun 8 15:59 config.yml
-rw-r--r-- 1 ansible root ? 14150 Jun 8 15:38 custom-opensearch.yml
-rw-r--r-- 1 ansible root ? 536 Jun 8 13:28 internal_users.yml
답변1
이유는 다음과 같습니다.
root@BACKUP:/opt/docker/config/opensearch# ls -al
total 32
drw-r--r-- 3 ansible root 4096 Jun 8 15:38 . <--- 'x' permissions missing
drwxr-xr-x 7 ansible root 4096 Jun 8 13:28 ..
drw-r--r-- 2 ansible root 4096 Jun 8 14:14 certs <--- 'x' permissions missing
디렉토리 및 디렉토리에 x
권한이 없습니다 ./opt/docker/config/opensearch
certs
일반 파일의 경우 x
권한은 다음을 의미합니다.구현하다. 디렉토리의 경우 이는 다음을 의미합니다.콘텐츠에 액세스. r
디렉터리 에 대한 권한이 없으면 x
그 안에 있는 파일 및 하위 디렉터리의 이름을 읽을 수 있지만 이와 관련된 메타데이터는 읽을 수 없습니다. 결과적으로 ls -l
해당 디렉터리 목록은 다음과 같습니다.
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
d????????? ? ? ? ? ? certs
-????????? ? ? ? ? ? custom-opensearch.yml
-????????? ? ? ? ? ? internal_users.yml
기술적으로 파일 이름은 디렉토리 자체의 일부이므로 볼 수 있지만 액세스 권한이 없기 때문에인덱스 노드파일 및 하위 디렉터리를 나타내면 소유권/권한/타임스탬프/크기 정보를 볼 수 없습니다.
수리하다:
chmod a+x /opt/docker/config/opensearch /opt/docker/config/opensearch/certs
x
때로는 권한은 있지만 권한은 없는 디렉토리를 갖는 것이 바람직할 수 있습니다 r
. 따라서 사용자는 액세스해야 하는 파일 또는 하위 디렉토리의 정확한 이름을 미리 알고 있는 경우에만 그 안에 있는 파일에 액세스할 수 있습니다. 그러나 그 반대의 경우, r
권한은 있지만 해당 권한이 없는 디렉토리 x
(내가 아는 한)는 일반적인 사용에 실제로 유용하지 않습니다.