Linuxでグループ別フォルダを設定する方法

Linuxでグループ別フォルダを設定する方法

複数のグループ用に隔離されたワークスペースを作成しようとしています。各グループメンバーは、関連付けられている共有フォルダを読み、書き込み、表示できるだけでなければなりません。

ユーザー権限を処理するために、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

おすすめ記事