홈 디렉토리 내의 선택적 하위 디렉토리에 액세스

홈 디렉토리 내의 선택적 하위 디렉토리에 액세스

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필요한 디렉토리에 대한 그룹 권한을 부여하는 것을 막을 방법은 없습니다 . 다른 디렉토리에는 여전히 접근할 수 없으며 해당 권한을 제한하여 해당 파일에도 접근할 수 없도록 조치할 수 있습니다.parentchild1child2file1

답변3

첫째, 권한 700은 다른 사용자가 하위 디렉터리를 포함하여 디렉터리에 있는 모든 항목에 액세스하는 것을 완전히 방지합니다. (그러면 안 되는) 이를 달성하려면 우회적인 방식으로 이를 수행해야 합니다.

어떤 파일 시스템을 사용하고 있는지는 언급하지 않았지만 btrfs 파일 시스템에서 작동하고 다른 파일 시스템도 비슷한 기능을 지원합니다.

비공개 콘텐츠만 포함된 폴더 A부터 시작합니다.

그 후 제가 취한 단계는 다음과 같습니다.

  1. 공유 콘텐츠에 대한 하위 볼륨을 생성합니다.btrfs subvolume create /.../A/B
  2. 하위 볼륨 채우기:touch A/B/private
  3. 사용자가 액세스할 수 있는 새 폴더 C를 만듭니다.mkdir C
  4. C에 A/B 마운트: fs 볼륨이 있는 블록 장치의 경로는 mount -o subvol=../A/B /dev/sdXX C어디에 있습니까?/dev/sdXX
  5. A의 권한을 설정합니다.chmod 700 A
  6. A/B 권한 설정:chmod 777 A/B

새로운 레이아웃은 다음과 같습니다:

.
├── A
│   ├── B
│   │   └── public
│   └── private
└── C
    └── public

모든 사용자는 C를 통해 A/B에 액세스할 수 있지만 A의 소유자를 제외한 누구도 어떤 방식으로든 액세스할 수 없습니다.

관련 정보