質問に答えるのを手伝ってください。 CentOS 7には、独自のプロジェクトを持つ多くのユーザーがいるサーバーがあります。一部のユーザーには、他のユーザーが作業するサブプロジェクトがあり、構造は次のようになります。 /home/user1/{project1,project2} プロジェクト 1/2 所有者 user1 の場合: user1/home/user2{project1,project2}
実行したいが動作しないもの:user1のproject2と静かに(rwx)動作する必要がある許可されたpoduser1がありますが、そのユーザーの他のプロジェクトを使用することはできません。ユーザーをグループに入れることはお勧めできません。すべてを取得するには権限が多すぎます。 ACL経由で試しました。まったく迷惑です。
答え1
何を求めるのかはわかりませんが、あるユーザー()が自分のホームディレクトリ()へのフルアクセスを許可せずに、特定のサブディレクトリ(たとえば)を別のユーザー()と共有できるようにuser1
したいと思います。 。これを行う標準的な方法は、ディレクトリ用のプロジェクト固有のグループを作成し、アクセス制御リスト(ACL)とsetgidビットを使用して、ディレクトリ内のファイルの適切な権限と所有権を維持することです。あなたの場合は、次のコマンドを実行できます。/home/user1/project1
user2
/home/user1
groupadd project1
chown -R user1:project1 /home/user1/project1
chmod -R g+s /home/user1/project1
setfacl --default --modify group:project1:rwx /home/user1/project1
setfacl --modify group:project1:rwx /home/user1/project1
その後、必要なユーザーアカウントをproject1
グループに追加できます。たとえば、次のようになります。
usermod -a -G project1 user2
以下は、より詳細な説明です。
説明する設定の種類を構成する方法を説明するために、例を使用します。これらのコマンドはすべてルートとして実行されます。
まず、いくつかのユーザーを作成しましょう。
useradd -m user1
useradd -m user2
次に、最初のユーザーのホームディレクトリにプロジェクトディレクトリを作成しましょう。
sudo -u user1 mkdir /home/user1/project1
それでは、プロジェクトに関連付けられたグループを作成し、それをプロジェクトディレクトリのグループ所有者として設定しましょう。
groupadd project1
chown -R user1:project1 /home/user1/project1
プロジェクトグループに次の2人のユーザーを追加しましょう。
usermod -a -G project1 user1
usermod -a -G project1 user2
次に、アクセス制御リスト(ACL)を使用してプロジェクトディレクトリのデフォルト権限を設定しましょう。
setfacl --default --modify group:project1:rwx /home/user1/project1
setfacl --modify group:project1:rwx /home/user1/project1
また、setgid ビットをオンにします。
chmod -R g+s /home/user1/project1
この時点では、すべてがスムーズに実行される必要があります。プロジェクトディレクトリの権限を確認してみましょう。
root@host:~# ls -ld /home/user1/project1/
drwxrwsr-x+ 2 user1 project1 4096 Nov 13 12:20 /home/user1/project1/
root@host:~# getfacl /home/user1/project1
getfacl /home/user1/project1/
getfacl: Removing leading '/' from absolute path names
# file: home/user1/project1/
# owner: user1
# group: project1
# flags: -s-
user::rwx
group::r-x
group:project1:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:project1:rwx
default:mask::rwx
default:other::r-x
user2
プロジェクトディレクトリに書き込む機能をテストしてみましょう。
root@host:~# sudo -u user2 touch /home/user1/project1/testing
root@host:~# ls -l /home/user1/project1/testing
-rw-rw-r--+ 1 user2 project1 0 Nov 13 12:20 /home/user1/project1/testing