他のユーザーが書き込み権限を持つファイルをユーザーが変更するのを防ぐ方法は?

他のユーザーが書き込み権限を持つファイルをユーザーが変更するのを防ぐ方法は?

最近奇妙な状況が発生しました。 User1はUser2に属し、User2グループ内のディレクトリのファイルを変更できる必要があります。この編集を容易にするには、ディレクトリ構造の権限を757に繰り返し変更します。その後、リストは次のようになります。

drwxr-xrwx 3 user2 user2 4096 Nov 19 19:41 .
drwxr-xr-x 3 user2 user2 4096 Nov 19 19:41 ..
drwxr-xrwx 3 user2 user2 4096 Nov 19 19:41 directory1
drwxr-xrwx 3 user2 user2 4096 Nov 19 19:41 directory2
drwxr-xrwx 3 user2 user2 4096 Nov 19 19:41 directory3
-rwxr-xrwx 3 user2 user2   42 Nov 19 19:41 file1

ユーザー1はファイルを読み取ることができますが、新しいファイルを作成したり既存のファイルを編集/コピーしようとすると失敗します。エラーは次のようになります。

$ touch file1
touch: cannot touch 'file1': Permission denied

ユーザ1は、ドライブが書き込み禁止であると考え、ユーザ2にファイルを変更するように要求する。ユーザー2は問題なくこれを行うことができました。これはドライブが書き込み禁止になっていることを示しています。

dfとを見ると、/etc/fstabファイルがローカルにマウントされたハードドライブにあるようです。

その他の情報。 User1 は User2 グループに属します。 (最初はそうではないと思いました。)ファイルにロックはありません。 SE Linuxが無効になっているようです。 (示されているようにsestatus)一般的に誰もが書くことができるようにディレクトリ全体を設定したくないと思いますが、これは特別なケースです。別のコンピュータでほぼ同じビルドが動作します。 getfaclの出力はファイルとディレクトリに対して同じです。

# file: .
# owner: user
# group: user
user::rwx
group::r-x
other::rwx

この保護の原因は何ですか?これをキャンセルする方法は?

ベストアンサー1

もともと事実の1つが間違っていたので、この質問を削除しようとしました。私は明らかな答えを逃したので、後で同様の問題が発生する可能性がある人を助けるために、この問題の考えられる原因と解決策を投稿するためのあまり明確ではない選択肢を見つけることにしました。

1)この問題が発生し、user1がuser2に属していないと思われる場合は、user1にグループを確認するか、passwdファイルを確認して自分で確認してください。この場合、user1は次の/etc/passwd項目として誤って追加され、項目はありません/etc/group

user1:x:1001:1000:User1:/home/user1:/bin/bash

そして、ユーザー2は次のようになります/etc/passwd

user2:x:1000:1000:User2:/home/user2:/bin/bash

そして

user2:x:1000:user2 user1

グループ権限は他の権限よりも優先されるため、書き込みは許可されません。グループ権限を変更したり、user2 グループから user1 を削除したりすると、この問題を解決できます。これはもともとの仮説が正しいならば、おそらく多くの人が得ることができる簡単な答えです。うまくいかない場合は、自分で確認する必要があることを覚えておいてください。

2)あまり明確ではない答えは、ファイルアクセス制御リスト(ACL)を使用することです。そのユーザーに特定の権限が割り当てられている場合、これらの権限は一般権限よりも優先されます。 ACLを使ってみた人なら誰でもこの事実を知っているはずです。しかし、多くの人は、ACLが存在するという事実さえ知らないようです。以下は、ユーザーをブロックする方法の例です。

$ sudo setfacl -m u:user:r-x .
$ ls -la
total 0
drwxr-xrwx+  2 root root  60 Nov 21 20:46 .
drwxrwxrwt. 12 root root 300 Nov 21 20:45 ..
-rw-rw-r--.  1 user user   0 Nov 21 20:46 dog
$ touch cat
touch: cannot touch ‘cat’: Permission denied
$ getfacl .
# file: .
# owner: root
# group: root
user::rwx
user:user:r-x
group::r-x
mask::r-x
other::rwx

この操作を元に戻すには

$ sudo setfacl -b .
$ sudo getfacl .
# file: .
# owner: root
# group: root
user::rwx
group::r-x
other::rwx

$ touch cat
$ ls -la cat
-rw-rw-r--. 1 user user 0 Nov 21 20:51 cat

最終的に私に戻って再検証したグループに要求した@andcozと、以前に見たことがないか、使用したことのない「getacl」に言及した@Rianto Wahyudiに感謝します。

おすすめ記事