ユーザーごとに異なる権限を付与するにはどうすればよいですか?


11

だから、私はここ数年Linuxを使用していて、この答えを本当に知っているはずですが、それを見つけるのに苦労しています。具体的には、Debianベースのディストリビューション(主にUbuntu)を使用しています。

4人以上のユーザーがいるサーバーを使用している場合、ユーザーごとに異なるアクセス権セットをファイルに設定するにはどうすればよいですか。

例えば:

これらの権限と所有権を持つファイルがある場合:

rwx rw_ r__ user1:group1 file1.txt

これらの必要な権限を持つ3人のユーザーがいます...

  • user1 rwx
  • user2 rw_
  • user3 r__

私がしなければならないのは、user1がファイルを所有し、user2group1にあり、user3がどちらでもない場合です-正しいですか?

しかし、もし私がuser4user5を持っているとしたらどうでしょう

  • user4 _wx
  • ユーザ5 __X

どうすれば設定できますか?

以前はこれを行う必要はありませんでしたが、Windows管理者からその質問をされましたが、正直に答えることができませんでした。


8
アクセス許可をこのように細かくするには、アクセス制御リスト(ACL)を利用する必要がありますここで簡単なチュートリアルを見つけることができます。注意が必要ですが、アクセス許可ではなくACLのパスをいったん開始すると、それは非常に滑りやすく、最終的に意図しない結果を伴う事態が非常に複雑になります。
MelBurslan 2016

回答:


19

従来の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--

ls出力を見れば、ファイルにACLがあるかどうかが簡単にわかります。

$ ls -l file.txt
-rw-rwxr--+ 1 sweh sweh 0 Jul 26 10:33 file.txt

+権限の終わりには、ACLを示しています。


2

はい、ACL:を使用すると、さまざまなユーザーまたはグループにさまざまな権限を自由に設定できます。S(として示さ:IIRC通常のグループの権限は、グループとユーザーはACLを通じて持つことができるという一連の権限を制限maskgetfacl)、しかし、setfaclあなたが権限を追加する場合、それに対処する必要があります。

ただし、場合によっては、一連の権限が意味をなしているかどうかを尋ねる必要があります。

これらの望ましい権限を持つ3人のユーザーがい ます。...-
user1 rwx
-user2 rw_
-user3 r__

これをACL:sで、または(おおよそ)user1をファイルの所有者にし、user2をグループのメンバーにして、user3を含む他のユーザーに読み取りアクセスを許可することで、通常のUnix権限で実装できます。ただし、(ディレクトリへのアクセス権を持つ)全員が読み取りアクセス権も持っています。

これらの権限の意味を考えてみましょう。読み取り可能なユーザーと、読み取りと書き込みが可能な別のユーザーがいます。それは完全に普通です。これらのどちらにもファイルを実行するためのアクセス権はありませんが、3番目のユーザーもそれを実行できるはずです。

それは私の心にはあまり意味がありません。元のファイルを実行するためのアクセス権がなくても、ファイルを読み取り、コピー(*)を作成し、実行可能ファイルとしてマークして実行できるユーザーであれば誰でもアクセスできます。実行可能ファイルがsuidを介して昇格された特権を持っている場合は、一部のユーザーだけが実行アクセス権を持つことが理にかなっている唯一の状況です。しかし、その場合は、ファイルへの書き込みアクセス権を持つ他のユーザーも必要ありません。

同じ意味で、user4 with -wxとuser5 with --xは私には意味がありません。追加のみを許可する可能性がある場合、書き込み専用アクセスは理にかなっている可能性がありますが、アクセス許可システムはきめ細かくありません。

(*どこにも書き込めない場合を除く)


xただし、ビットの奇妙な要件を削除すると、user1とuser2に書き込みアクセス権があり、user3に読み取りアクセス権が必要なファイルが残ります。1つのライターと複数のリーダーは、従来のモデルでは簡単ですが、この場合は、ファイルのアクセス許可とそれを含むディレクトリのアクセス許可を組み合わせるためのトリックが必要になります。幸い、多くの場合、より多くの権限を持つ1人のユーザーで十分です。

実行ビットの要件がない場合、これはACL:sを使用するケースのように見えます。しかし、それを使うと、この特定の例は私にはかなり入り組んでいるように見えます。


ユーザーが実行権限なしでマウントされたファイルシステムにのみ書き込むことができる場合、適切な権限が設定されていれば元のファイルを実行できたとしても、コピーを実行することはできません。また、エクスプロイトを検索しないようにしたい場合は、実行のみが意味をなす場合があります。-wx確かに奇妙です。
celtschk

1
一部のシステムには、追加のみを許可するメカニズムがあります。chattr +aたとえば、Linuxにはがあります。また、システム固有のものがなくても、ファイルをFIFOにすることができます。--xまた-wxディレクトリの場合も、私にとっては理にかなっています。
Random832
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.