z / OS UNIXホームディレクトリ内の特定のサブディレクトリにのみアクセスする方法を探しています。これを行う方法はありますか?現在のホームディレクトリ権限は700に設定されているため、ホームディレクトリ内のサブディレクトリにアクセスできません。ただし、ホームディレクトリに777アクセス権を設定すると、すべてのユーザーがホームディレクトリ内のすべてのサブディレクトリにアクセスできます。しかし、私のプロジェクトは、メインディレクトリ内のサブディレクトリを1つだけアクセスするだけです。 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の所有者以外の誰もいかなる方法でもアクセスできません。