複数のグループ用に隔離されたワークスペースを作成しようとしています。各グループメンバーは、関連付けられている共有フォルダを読み、書き込み、表示できるだけでなければなりません。
ユーザー権限を処理するために、2つのユーザーグループgroupATeamとgroupBTeamを作成しました。また、関連プロジェクトフォルダ groupA と groupB にグループ権限を割り当てました。
#Check project folder permissions
admin@computer:/folder/data$ ls -al /folder/data | grep groupA
drwsrws--x 2 root groupATeam 4096 Jun 24 11:56 groupA
admin@computer:/folder/data$ ls -al /folder/data | grep groupB
drwsrws--- 2 root groupBTeam 4096 Jun 24 11:38 groupB
両方のグループの管理者である場合は、両方のフォルダにアクセスして問題なく読み書きできます。
#Check groups
admin@computer:/folder/data$ getent group groupATeam
groupATeam:x:1009:worker_3,worker_4,admin
admin@computer:/folder/data$ getent group groupBTeam
groupBTeam:x:1008:worker_1,worker_2,admin
#Check admin can access and write to groupA folder
admin@computer:/folder/data$ cd groupA/
admin@computer:/folder/data/groupA$ ls
test_file.txt
admin@computer:/folder/data/groupA$ cd ..
#Check admin can access groupB folder
admin@computer:/folder/data$ cd groupB/
admin@computer:/folder/data/groupB$ ls
test_file.txt
また、人々はgroupA
フォルダにアクセスし、読み書きするための正しい権限を持っているようですが、groupBs
フォルダにはアクセスできません。
# Worker 3 is part of groupA team and therefore should only be able to interact with groupA folder but not groupB
worker_3@computer:~$ cd /folder/data/groupA/
worker_3@computer:/folder/data/groupA$ touch test_file101.txt
worker_3@computer:/folder/data/groupA$ ls
test_file.txt test_file101.txt
worker_3@computer:/folder/data/groupA$ vim test_file.txt
#Check non group member can acccess restricted groupB folder
worker_3@computer:~$ cd /folder/data/groupB/
bash: cd: /folder/data/groupB/: Permission denied
# This is the correct behaviour I'm looking for
問題はgroupBTeamユーザーにあるようです。
# Worker 1 is part of groupB team and therefore should only be able to interact with groupB folder but not groupA
worker_1@computer:/folder/data$ cd groupB/
worker_1@computer:/folder/data/groupB$ ls
test_file.txt
worker_1@computer:/folder/data/groupB$ touch test_file101.txt
worker_1@computer:/folder/data/groupB$ ls
test_file.txt test_file101.txt
worker_1@computer:~$ cd /folder/data/groupA/ #This shouldn't work
worker_1@computer:/folder/data/groupA$ ls
ls: cannot open directory '.': Permission denied
worker_1@computer:/folder/data/groupA$ cd ..
# Incorrect behavior, I can access the groupA folder even though worker_1 isn't part of
# this group
のメンバーはフォルダにgroupBTeam
アクセスできますが、これは望ましい動作ではありません。groupA
予想される動作が発生しない理由と、それを修正する方法を説明できる人はいますか?
ちなみに、以下の手順でグループとフォルダの権限を設定しました。https://www.tutorialspoint.com/how-to-create-a-shared-directory-for-all-users-in-linux
答え1
ディレクトリ内の他のユーザーの実行ビットを設定しましたgroupA
。
drwsrws--x 2 root groupATeam 4096 Jun 24 11:56 groupA
これにより、誰もがグループのメンバーシップに関係なくディレクトリを閲覧できます。ご存知のように、ディレクトリのgroupB
他のメンバーにはgroupATeam
アクセスできないビットが設定されていません。
drwsrws--- 2 root groupBTeam 4096 Jun 24 11:38 groupB
必要なものを取得するには、次のいずれgroupA
かのコマンドを使用してディレクトリから実行ビットを削除します。
chmod 2770 /path/to/groupA
chmod o-x /path/to/groupA
そのユーザーgroupBTeam
や他の人はアクセスできません。
ディレクトリ内のすべてのエントリ(ファイルを含む)に影響を与えるには、次の手順を実行します。
chmod -R 2770 /path/to/groupA
chmod -R o-x /path/to/groupA