ホームディレクトリ内のオプションのサブディレクトリにアクセスする

ホームディレクトリ内のオプションのサブディレクトリにアクセスする

z / OS UNIXホームディレクトリ内の特定のサブディレクトリにのみアクセスする方法を探しています。これを行う方法はありますか?現在のホームディレクトリ権限は700に設定されているため、ホームディレクトリ内のサブディレクトリにアクセスできません。ただし、ホームディレクトリに777アクセス権を設定すると、すべてのユーザーがホームディレクトリ内のすべてのサブディレクトリにアクセスできます。しかし、私のプロジェクトは、メインディレクトリ内のサブディレクトリを1つだけアクセスするだけです。 z / OS UNIXにこの要件を満たすための方法またはソリューションはありますか?

答え1

最上位ディレクトリに権限を設定すると、777すべてのユーザーがそのディレクトリからオブジェクトを作成および削除できます。あなたはおそらくこれをしたくないでしょう。のみ755rwxr-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ディレクトリを見ることができますchild1child2これで、誰もが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の所有者以外の誰もいかなる方法でもアクセスできません。

関連情報