![홈 디렉토리 내의 선택적 하위 디렉토리에 액세스](https://linux55.com/image/223364/%ED%99%88%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%20%EB%82%B4%EC%9D%98%20%EC%84%A0%ED%83%9D%EC%A0%81%20%ED%95%98%EC%9C%84%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EC%97%90%20%EC%95%A1%EC%84%B8%EC%8A%A4.png)
z/OS UNIX 홈 디렉토리 내의 특정 하위 디렉토리에만 액세스하는 방법을 찾고 있습니다. 이를 수행할 수 있는 방법이 있습니까? 현재 홈 디렉터리 권한은 700으로 설정되어 있으므로 홈 디렉터리 내의 하위 디렉터리에 액세스할 수 없습니다. 그러나 홈 디렉터리에 777 액세스 권한을 설정하면 모든 사용자가 홈 디렉터리 내의 모든 하위 디렉터리에 액세스할 수 있습니다. 하지만 내 프로젝트는 기본 디렉터리 내의 하위 디렉터리 하나만 액세스하면 됩니다. z/OS UNIX에 이 요구 사항을 충족할 수 있는 방법이나 솔루션이 있습니까?
답변1
최상위 디렉터리에 권한을 설정하면 777
모든 사용자가 해당 디렉터리에서 개체를 만들고 삭제할 수 있습니다. 당신은 아마 이것을 원하지 않을 것입니다. 오직 755
: rwxr-xr-x
. 소유자가 쓸 수 있고 다른 사람이 읽고 검색할 수 있습니다. 다음으로 각 하위 디렉터리에 대한 액세스 권한 제어를 수행합니다. 700
팀이 액세스할 수 있는 디렉터리를 제외한 모든 하위 디렉터리를 생성하면 이 방법이 작동합니다. 755
모든 사람이 읽고 검색할 수 있지만 그 안에 파일과 하위 디렉터리를 생성하거나 삭제할 수 없도록 하려면 이 디렉터리를 만드십시오. 그런 다음 디렉터리의 개별 파일 권한에 따라 누가 어떤 파일 내용에 액세스할 수 있는지 결정됩니다.
답변2
디렉토리에 대한 권한 정의 0700
는 사용자/소유자에게 읽기, 쓰기, 실행/검색 액세스 권한이 있지만 그룹 및 기타 사용자에게는 액세스 권한이 없다는 것입니다. 기간. 소유자가 아니고 이 최상위 디렉터리의 디렉터리에 액세스하려면 최소한 실행/검색 권한이 필요합니다. 이 상위 디렉터리 내의 하위 디렉터리와 파일에는 고유한 권한이 있으므로 다른 파일 및 디렉터리 이름 외에는 아무것도 볼 수 없이 디렉터리(및 해당 내용)에 액세스할 수 있습니다.
고려하다:
umask 0022
mkdir -m700 parent parent/child1 parent/child2
touch parent/file1 parent/child1/file11 parent/child2/file21
tree
.
└── parent # rwx------
├── child1 # rwx------
│ └── file11 # rw-r--r--
├── child2 # rwx------
│ └── file21 # rw-r--r--
└── file1 # rw-r--r--
parent
귀하가 소유자인 경우 child1
모든 child2
콘텐츠에 대한 전체 액세스 권한을 갖게 되며, 그렇지 않으면 아무 것도 액세스할 수 없습니다.
chmod go+rx parent # Add read,execute/search permission
이렇게 하면 그룹과 다른 사람들에게 parent
디렉터리에 대한 액세스 권한이 부여되지만 디렉터리에 파일/디렉터리를 추가하거나 제거할 수 있는 권한은 부여되지 않습니다. 따라서 이 사람들은 file1
두 디렉토리를 모두 볼 수 있습니다 child1
. child2
이제 모든 사람이 file1
자신의 권한으로 파일을 읽을 수 있지만 소유자만 수정할 수 있습니다. 모든 사람이 디렉토리 이름 child1
과 디렉토리 이름을 볼 수 있지만 child2
소유자만 해당 내용을 나열할 수 있습니다.
소유자가 귀하를 새 그룹의 유일한 다른 구성원으로 만들고 귀하가 액세스할 수 있도록 parent
필요한 디렉토리에 대한 그룹 권한을 부여하는 것을 막을 방법은 없습니다 . 다른 디렉토리에는 여전히 접근할 수 없으며 해당 권한을 제한하여 해당 파일에도 접근할 수 없도록 조치할 수 있습니다.parent
child1
child2
file1
답변3
첫째, 권한 700은 다른 사용자가 하위 디렉터리를 포함하여 디렉터리에 있는 모든 항목에 액세스하는 것을 완전히 방지합니다. (그러면 안 되는) 이를 달성하려면 우회적인 방식으로 이를 수행해야 합니다.
어떤 파일 시스템을 사용하고 있는지는 언급하지 않았지만 btrfs 파일 시스템에서 작동하고 다른 파일 시스템도 비슷한 기능을 지원합니다.
비공개 콘텐츠만 포함된 폴더 A부터 시작합니다.
그 후 제가 취한 단계는 다음과 같습니다.
- 공유 콘텐츠에 대한 하위 볼륨을 생성합니다.
btrfs subvolume create /.../A/B
- 하위 볼륨 채우기:
touch A/B/private
- 사용자가 액세스할 수 있는 새 폴더 C를 만듭니다.
mkdir C
- C에 A/B 마운트: fs 볼륨이 있는 블록 장치의 경로는
mount -o subvol=../A/B /dev/sdXX C
어디에 있습니까?/dev/sdXX
- A의 권한을 설정합니다.
chmod 700 A
- A/B 권한 설정:
chmod 777 A/B
새로운 레이아웃은 다음과 같습니다:
.
├── A
│ ├── B
│ │ └── public
│ └── private
└── C
└── public
모든 사용자는 C를 통해 A/B에 액세스할 수 있지만 A의 소유자를 제외한 누구도 어떤 방식으로든 액세스할 수 없습니다.