だから私は何年もの間Linuxを使ってきましたが、それに対する答えを知る必要がありますが、見つけるのは難しいです。特に私はDebianベースのディストリビューションを使ってきました。主にUbuntuです。
3人以上のユーザーを持つサーバーがある場合は、各ユーザーに対して異なるファイル権限セットをどのように設定しますか?
たとえば、
次の権限と所有権を持つファイルがある場合:
rwx rw_ r__ user1:group1 file1.txt
これらの必須権限を持つ3人のユーザーがいます...
- ユーザー1読み書き
- ユーザー2RW_
- ユーザー3アール字型__
私がしなければならないことは持っているだけです。ユーザー1ファイルを所有し、ユーザー2~へグループ1とユーザー3どちらもできません。そうですか?
しかし、もし私がユーザー4そしてユーザー5。
- ユーザー4_wx
- ユーザー5__X
どのように設定しますか?
以前はこれを行う必要はありませんでしたが、Windows管理者は私にこの質問をして正直に答えることができませんでした。
答え1
既存のUNIX権限は、検索されたユーザー、グループ、およびその他の権限のみを許可します。これにより、厄介なグループの組み合わせを作成する必要があります。
したがって、新しい形式のアクセス制御リスト(ACL)が追加されました。これにより、さまざまな権限を持つ複数のユーザーとグループを指定できます。これはsetfacl
コマンドで設定され使用されます。getfacl
$ setfacl -m u:root:r-- file.txt
$ setfacl -m u:bin:-wx file.txt
$ setfacl -m u:lp:--x file.txt
$ getfacl file.txt
# file: file.txt
# owner: sweh
# group: sweh
user::rw-
user:root:r--
user:bin:-wx
user:lp:--x
group::r--
mask::rwx
other::r--
出力を見ると、ファイルにACLがあるかどうかを簡単に確認できますls
。
$ ls -l file.txt
-rw-rwxr--+ 1 sweh sweh 0 Jul 26 10:33 file.txt
+
最後の権限はACLを表します。
答え2
はい、ACL:さまざまなユーザーまたはグループに対してさまざまな権限を自由に設定できます。 IIRCの一般的なグループ権限は、グループとユーザーがACL:sを介して持つことができる権限のセットを制限します(mask
図を参照getfacl
)が、setfacl
権限を追加する場合はこれを処理する必要があります。
ただし、場合によっては権限セットが適切かどうかを尋ねる必要があります。
これらの必須権限を持つ3人のユーザーがいます...
- user1 rwx
- user2 rw_
- user3 r__
ACL:s を使用するか (通常)、一般的な Unix 権限を使用して user1 をファイルの所有者にし、user2 をグループのメンバーにし、他のすべてのユーザー (user3 を含む) に読み取りアクセス権を付与することでこれを行うことができます。それにもかかわらず、すべての人(ディレクトリへのアクセス権を持つ人)は読み取りアクセス権も持っています。
これらの権限が何を意味するのかを考えてみましょう。読める人 1人と読んで書ける人がいます。これは完全に正常です。これらのユーザーのどれもファイルを実行する権限がありませんが、3番目のユーザーもファイルを実行できる必要があります。
これは私にとってあまり意味がありません。ファイルを読むことができるユーザーは、誰でもコピー(*)を作成し、実行可能ファイルとしてマークし、元のファイルを実行せずに実行できます。一部のユーザーには実行アクセス権がありますが、他のユーザーには実行アクセス権がない唯一の状況は、実行可能ファイルにsuidを介して高い権限がある場合です。ただし、この場合、他のユーザーにもファイルへの書き込みアクセスを許可しないでください。
同じトークンで、user4 with-wx
とuser5 withは--x
私には理解できません。書き込み専用アクセスは、許可のみ可能な場合は意味があります。追加しかし、権限システムはそれほど細かくはありません。
(*どこにも使えない場合は除く)
ただし、このビットの奇妙な要件を削除すると、x
user1とuser2が書き込み権限を持ち、user3が読み取り権限を持つ必要があるファイルが得られます。既存のモデルを使用すると、1人の作成者と複数のリーダーが簡単ですが、この状況では、ファイル権限とインクルードディレクトリの権限を組み合わせるいくつかのトリックが必要です。幸いなことに、多くの場合、より多くの権限を持つユーザーで十分です。
これは、実行ビットが不要な場合にACL:sを使用する場合と同じです。しかし、この特別な例は私にとってやや複雑に見えます。