如何为每个用户授予不同的权限?


11

因此,我已经使用Linux几年了,我真的应该知道这个答案,但是我很难找到它。具体来说,我一直在使用基于Debian的发行版。

如果我有一台服务器,该服务器具有三个以上的用户,则如何为每个用户设置对文件的不同权限集。

例如:

如果我有一个具有以下权限和所有权的文件:

rwx rw_ r__ user1:group1 file1.txt

并且我有3个具有这些所需权限的用户。...

  • user1 rwx
  • user2 rw_
  • 用户3 r__

我要做的就是让user1拥有文件,user2group1中,而user3都不是-对吗?

但是,如果我有一个user4user5,该怎么

  • user4 _wx
  • user5 __x

我该如何设置?

我以前不必这样做,但是Windows管理员问我这个问题,老实说我无法回答。


8
对于这种粒度的权限,您将需要利用访问控制列表(ACL)。您可以在此处找到快速教程。尽管要小心一点,但是一旦您开始使用ACL而不是使用权限的路径,那将是一个非常湿滑的斜坡,事情会很快变得复杂,最终会带来意想不到的后果。
MelBurslan '16

Answers:


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的:S(如图mask中的getfacl),但setfacl如果添加权限应面对这一切。

但是在某些情况下,您需要询问权限集是否有意义。

我有3个具有这些所需权限的
用户
。...- user1 rwx -user2 rw_
-user3 r__

您可以使用ACL:s来实现此功能,或者(大约)使用通常的Unix权限来实现此功能,方法是使user1成为文件的所有者,使user2成为该组的成员,并让其他用户(包括user3)具有读取权限。虽然如此,每个人(有权访问目录)也将具有读取权限。

让我们考虑一下这些权限的含义。您有一个可以读取的用户,另一个可以读取和写入的用户。那是完全正常的。这些用户均无权执行该文件,但随后,第三个用户也应该能够执行该文件。

在我看来,这没有多大意义。可以读取文件,复制(*),将其标记为可执行并运行它的任何用户,都无权执行原始文件。只有部分可执行文件通过suid具有提升的特权时,对某些用户却对其他用户却没有执行访问权限才有意义。但是,在这种情况下,您也不应该让其他用户对该文件具有写权限。

从同样的意义上说,user4 with -wx和user5 with --x对我来说没有意义。如果只允许添加附加内容,则只写访问可能有意义,但是权限系统的粒度不够。

(*除非他们无法在任何地方写东西)


但是,如果删除该x位的怪异要求,则会剩下一个文件,其中user1和user2应该具有写访问权,而user3应该具有读访问权。使用传统模型,一个作者和多个读者会很容易,但是这种情况将需要技巧来将文件权限与包含目录的权限结合在一起。幸运的是,在许多情况下,一个拥有更多权限的用户就足够了。

不需要执行位,这看起来就像使用ACL:s的情况。但是有了它,这个例子对我来说似乎很复杂。


如果用户只能在没有执行许可的情况下写入安装的文件系统,则即使可以设置适当的许可权,即使他可以执行原始文件,他也不能执行副本。如果您希望阻止他们寻找漏洞,那么仅执行可能也很有意义。-wx当然,这很奇怪。
celtschk

1
一些系统具有仅允许追加的机制。chattr +a例如,Linux有。即使没有任何特定于系统的内容,您也可以将文件设置为FIFO。--x,并且据此扩展-wx,对目录来说对我来说也是有意义的。
Random832 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.