Linux中的访问控制列表(ACL)

什么是ACL? 访问控制列表(ACL)为文件系统提供了额外的、更灵活的权限机制。它旨在帮助您获得UNIX文件权限。ACL允许您将任何用户或组的权限授予任何光盘资源。

null

ACL的使用: 设想一个场景,其中一个特定的用户不是您创建的组的成员,但您仍然希望提供一些读或写访问权限,您如何在不让用户成为组成员的情况下做到这一点,下面是图片访问控制列表,ACL帮助我们做到这一点。

基本上,ACL用于在Linux中创建灵活的权限机制。

在Linux手册页中,ACL用于为文件和目录定义更细粒度的自主访问权限。

塞特法克尔 getfacl 分别用于设置ACL和显示ACL。

例如:

getfacl test/declarations.h

输出:

# file: test/declarations.h
# owner: mandeep
# group: mandeep
user::rw-
group::rw-
other::r--

用于设置ACL的命令列表:

1) To add permission for user
setfacl -m "u:user:permissions" /path/to/file

2) To add permissions for a group
setfacl -m "g:group:permissions" /path/to/file 

3) To allow all files or directories to inherit ACL entries from the directory it is within
setfacl -dm "entry" /path/to/dir

4) To remove a specific entry
setfacl -x "entry" /path/to/file

5) To remove all entries
setfacl -b path/to/file

例如:

setfacl -m u:mandeep:rwx test/declarations.h

使用setfacl修改ACL: 要为用户添加权限(用户是用户名或ID):

# setfacl -m "u:user:permissions" 

要为组添加权限(组是组名或ID):

# setfacl -m "g:group:permissions" 

要允许所有文件或目录从其所在的目录继承ACL条目,请执行以下操作:

# setfacl -dm "entry" 

例子:

setfacl -m u:mandeep:r-x test/declarations.h

有关输出,请参见下图:

图片[1]-Linux中的访问控制列表(ACL)-yiteyi-C++库

setfacl和getfacl

查看ACL: 要显示权限,请执行以下操作:

# getfacl filename

观察两个输出之间的差异 getfacl 使用设置ACL权限之前和之后的命令 塞特法克尔 命令 在上图中,为用户mandeep添加了一行额外的内容。

输出:

图片[2]-Linux中的访问控制列表(ACL)-yiteyi-C++库

更改权限

上面的命令可以从中更改权限 rwx r-x

删除ACL: 如果要删除设置的ACL权限,请使用带有-b选项的setfacl命令。 例如:

图片[3]-Linux中的访问控制列表(ACL)-yiteyi-C++库

删除设置权限

如果在使用setfacl命令和-b选项之前和之后比较getfacl命令的输出,可以发现在以后的输出中没有用户mandeep的特定条目。

您还可以使用ls命令检查是否有通过ACL设置的额外权限。

图片[4]-Linux中的访问控制列表(ACL)-yiteyi-C++库

用ls检查set acl

观察图像中的第一个命令输出,在权限后面有额外的“+”符号,如 -rw rwxr–+ ,这表示设置了额外的ACL权限,可以通过getfacl命令进行检查。

使用默认ACL: 默认ACL是分配给目录的一种特定类型的权限,它不会更改目录本身的权限,但会使目录中创建的所有文件默认设置指定的ACL。让我们演示一下:首先,我们将创建一个目录,并使用-d选项为其分配默认ACL:

$ mkdir test && setfacl -d -m u:dummy:rw test
© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享