Linux ACL(Access Control Lists),又称访问控制列表,是 Linux 内核所提供的权限控制手段。ACL 出现的最初目的是希望在 NFS 中提供更为灵活的文件权限控制方式,能够更好地支持文件共享。Linux 系统中具有使用 ACL 进行权限设置的能力,可以对文件和目录进行更为细致的权限控制。
setfacl 命令
setfacl 命令用于添加/修改文件或文件夹的 ACL 权限,形式:
setfacl [-bkndRLP] [-m permissions] [-M file] [-x permissions] [-X file] file ...
参数说明:
- -b: 移除有效附加权限。
- -k: 移除默认 ACL 条目。
- -n: 不会将用户和组名称转换为数字ID。
- -d: 设置默认 ACL 条目。
- -R: 递归地为文件和子目录设置 ACL 权限。
- -L: 如果源是一个符号链接,则跟随符号链接并修改其指向的文件/目录的 ACL 权限。
- -P: 不要跟随符号链接的文件/目录,而是忽略符号链接本身的权限。
- -m: 添加/修改 ACL 条目。
- -M: 将 ACL 条目从一个文件复制到目标文件或目录。
- -x: 移除 ACL 条目。
- -X: 从一个文件中移除 ACL 条目。
下面分别介绍 setfacl 命令的几种用法:
添加 ACL 条目
使用 -m 参数来添加 ACL 条目,例如:
setfacl -m u:serena:rw- file.txt
上面的例子中,将对 file.txt 文件添加 ACL 条目,给用户 serena 授予读写权限。
同时也可以同时添加 ACL 条目,例如:
setfacl -m u:tom:--x,g:dev:r--,o::r-- file.txt
上面的例子中,将对 file.txt 文件同时添加两个 ACL 条目,一个给用户 tom 授予执行权限,一个给组 dev 授予读权限,其他人只读权限。
修改 ACL 条目
使用 -m 参数修改某个用户/组的权限,例如:
setfacl -m u:serena:r-- file.txt
上面的例子中,将对 file.txt 文件中已有的 ACL 条目,重新设置用户 serena 的权限为只读。
移除 ACL 条目
使用 -x 参数移除 ACL 条目,例如:
setfacl -x u:serena file.txt
上面的例子中,将对 file.txt 文件中移除指定用户 serena 的 ACL 条目。
递归设置 ACL 权限
使用 -R 参数递归设置文件夹及其子文件夹内的 ACL 权限,例如:
setfacl -R -m u:tom:--x,g:dev:r--,o::r-- folder
上面的例子中,将递归设置 folder 文件夹及其子文件夹内的文件/文件夹的 ACL 权限。
getfacl 命令
getfacl 命令用于查看文件或文件夹的 ACL 权限,形式:
getfacl [-R|-r|-d] [-O outputfile] file ...
参数说明:
- -R: 递归地列出目录层次中的所有文件。
- -r: 不访问符号链接的文件,而是列出链接本身的权限信息。
- -d: 显示默认 ACL 条目。
- -O: 将文件保存到 outputfile 中。
下面介绍 getfacl 命令的几种用法:
查看文件/文件夹的 ACL 权限
读取文件的 ACL 权限,例如:
getfacl file.txt
上面的例子中,会输出 file.txt 文件的 ACL 权限。
递归查看目录及其子目录中的 ACL 权限
递归查看目录及其子目录中所有文件的 ACL 权限,例如:
getfacl -R folder
上面的例子中,会递归查看 folder 文件夹及其子文件夹中所有文件的 ACL 权限。
输出到文件
输出文件 ACL 权限到文件中,例如:
getfacl -R folder > acl.txt
上面的例子中,将会递归输出 folder 文件夹及其子文件夹中所有文件的 ACL 权限信息到 acl.txt 文件中。
以上是关于 Linux ACL 权限设置的详细讲解,我们可以通过 setfacl 和 getfacl 命令来设置和查看文件和目录的 ACL 权限。这种文件和文件夹权限控制的方式更为灵活,可以方便地向指定用户或组授予不同的读写执行权限,应用范围较广。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Linux ACL权限设置(setfacl和getfacl) - Python技术站