什么是ACL? 访问控制列表(ACL)为文件系统提供了额外的、更灵活的权限机制。它旨在帮助您获得UNIX文件权限。ACL允许您将任何用户或组的权限授予任何光盘资源。
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
有关输出,请参见下图:
查看ACL: 要显示权限,请执行以下操作:
# getfacl filename
观察两个输出之间的差异 getfacl 使用设置ACL权限之前和之后的命令 塞特法克尔 命令 在上图中,为用户mandeep添加了一行额外的内容。
输出:
上面的命令可以从中更改权限 rwx 到 r-x
删除ACL: 如果要删除设置的ACL权限,请使用带有-b选项的setfacl命令。 例如:
如果在使用setfacl命令和-b选项之前和之后比较getfacl命令的输出,可以发现在以后的输出中没有用户mandeep的特定条目。
您还可以使用ls命令检查是否有通过ACL设置的额外权限。
观察图像中的第一个命令输出,在权限后面有额外的“+”符号,如 -rw rwxr–+ ,这表示设置了额外的ACL权限,可以通过getfacl命令进行检查。
使用默认ACL: 默认ACL是分配给目录的一种特定类型的权限,它不会更改目录本身的权限,但会使目录中创建的所有文件默认设置指定的ACL。让我们演示一下:首先,我们将创建一个目录,并使用-d选项为其分配默认ACL:
$ mkdir test && setfacl -d -m u:dummy:rw test