ディレクトリへのアクセスを制御する方法は何ですか?

ディレクトリへのアクセスを制御する方法は何ですか?

質問に答えるのを手伝ってください。 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/project1user2/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

関連情報