Linux权限:用户,组,其他,白名单还是黑名单?并帮助共享具有完全,部分和无权限的目录


1

更新:为了我的一般目的,我在这里想到的就足够了:更新:https//raspberrypi.stackexchange.com/questions/13401/locking-down-raspbian-to-only-allow-limited-features/58778# 58778


所以在我看来,Linux权限作为白名单(强制允许单个,指定用户或单个,指定组的东西)而不是黑名单(强制拒绝单个,指定用户或单个,指定组的东西) 。这个对吗?如果是这样,我如何将某人列入黑名单,以便能够在特定目录或一组文件中进行读取,写入或执行?

例如:ls -l显示目录的权限,drwxr-xr-x意味着它是一个目录,用户具有读取,写入,执行(rwx)权限,具有rx权限,而其他人具有rx权限。假设用户是“user0”,组是“user0”。

如何明确允许“user1”和“user2”具有对此“user0”目录的所有权限,“user3”和“user4”没有权限,“user5”和“user6获得部分权限?

在我看来,我需要黑名单user3和user4,白名单user1和user2,部分白名单或部分黑名单user5和user6。

由于(我认为)Linux的权限只是白名单,实现这一目标的最佳方法是什么?

请注意,我的一部分困惑在于以下事实:

  1. 目录或文件一次只能属于一个用户或组(而不是说,为多个组授予访问特定目录或文件的权限)
  2. 用户可以属于多个组

我想我只需要一些这方面的好例子。


一个部分解决方案,有助于证明我遇到的问题,如下:

我们假设我要设置这些权限的user0目录是“/ home / user0”

首先,将目录用户设置为“user0”,并将“user0”分组(默认情况下只sudo adduser user0在第一时间使用)。接下来,将权限设置为“drwxrwx ---”(用户和组都是rwx,但其他人没有)

允许user1和user2对目录的所有权限,方法是将它们分别添加到user0组

授予user3和user4无权限:已完成,因为其他人具有“---”访问权限,而user3和user4不属于user0组。

给user5和user6部分权限(例如:“rx”): - 无法完成???? - 因为如果我将其他权限设为“rx”,那么它也会将其提供给user3和user4,但我希望它们被列入黑名单(具有“---”权限)。


我已经完成的背景阅读包括:


看起来您应该能够通过使用多个组来实现此目的。看看这是否有帮助:unix.stackexchange.com/questions/195466 / ...
fixer1234

Answers:


2

是的,如果您想用这种方式表达,标准的unix权限是“白名单”。

处理权限的常用方法是创建一个新组,该组对应该表现相似的所有文件进行抽象,为这些文件提供相应的组ID,并使应该获得这些权限的所有用户成为该组的一部分。这就是为什么用户可以成为许多团体的成员。

许可使用的设备以同样的方式进行处理,这就是为什么你有一个像团体inputdisk等等。在许多分布。

因此,从这个意义上讲,您可以将一个组视为“权限规则集”的特定“规则”。限制是每个文件只能有一个具有单一rwx权限组合的规则,超出“用户”和“其他”权限。

因此,使用标准的unix权限无法实现一组用户需要拥有一组权限而另一组需要为同一文件或目录拥有不同权限集的方案。

但是,标准的unix权限有一个扩展,称为访问控制列表(ACL)。详情man acl请见。对于许多文件系统,您必须指定一个选项以在安装时激活acl。


2

对于这种类型的粒度,您将需要使用ACL。使用ALC,您可以为多个用户或组分配不同的权限。要完成您的要求,您将运行以下命令(假设您的目录名为dir):

setfacl -m u:user1:rwx dir
setfacl -m u:user2:rwx dir
setfacl -m u:user3:- dir
setfacl -m u:user4:- dir
setfacl -m u:user5:rx dir
setfacl -m u:user6:rx dir

这将提供对user1和2的完全访问权限,对user3和4的访问权限以及对user5和6的读取/执行权限。如果ls -ld对目录执行了操作,您将注意到它现在已+附加到权限位。

$ ls -ld dir
drwxrwxr-x+ 2 user0 users 40 Dec  7 11:42 dir

+意味着它有一个或多个与之关联的ACL。您可以使用以下getfacl命令查看ACL :

$ getfacl dir
# file: dir
# owner: user0
# group: users
user::rwx
user:user1:rwx
user:user2:rwx
user:user3:---
user:user4:---
user:user5:r-x
user:user6:r-x
group::r-x
mask::rwx
other::r-x

另外值得注意的是,该ls命令似乎表明该目录是组可写的,但该getfacl命令显示它不是。这里的ACL是正确的,这意味着如果users组中的用户,但ACL中没有另外命名或文件所有权尝试在目录中创建文件,则它将失败。

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.