setfacl 命令详解

setfacl命令详解

setfacl命令提供了强大的工具来管理文件和目录的权限,允许比传统UNIX权限模型更细粒度的控制。通过掌握这些选项和语法,可以灵活地配置系统中的访问控制策略。

setfacl 命令用于设置或修改文件和目录的访问控制列表(ACL),ACL允许为文件或目录分配更精细的权限,超越传统的所有者、组、和其他用户权限模型。

常用选项

  • -m:修改ACL。用于添加或修改文件或目录的ACL条目。
1
setfacl -m u:username:rwx file

解释:为用户username设置文件file的权限为rwx。

  • -x:移除ACL。用于从文件或目录中移除指定的ACL条目。
1
setfacl -x u:username file

解释:移除用户username对文件file的ACL条目。

  • -b:删除所有ACL。用于移除文件或目录的所有ACL条目。
1
setfacl -b file

解释:删除文件file的所有ACL条目,使其恢复为仅使用传统的rwx权限。

  • -k:删除默认ACL。用于删除目录的默认ACL条目,但保留其他ACL条目。
1
setfacl -k directory

解释:删除目录directory的默认ACL条目。

  • -d:默认ACL。用于设置目录的默认ACL条目,这些条目会被自动继承到新创建的文件和子目录。
1
setfacl -d -m d:u:username:rwx directory

解释:为目录directory设置用户username的默认ACL条目rwx。

  • -R:递归应用ACL。用于递归设置指定目录及其子目录和文件的ACL。
1
setfacl -R -m u:username:rwx directory

解释:递归地为目录directory及其所有子目录和文件设置用户username的权限为rwx。

  • -n:不重写掩码。在修改ACL时,保留现有的掩码值。
1
setfacl -n -m u:username:rwx file

解释:在不更改现有掩码的情况下,为用户username设置文件file的权限为rwx。

  • --set:设置ACL。完全覆盖现有ACL,用新的ACL条目集替换现有的ACL。
1
setfacl --set u:username:rwx file

解释:将文件file的ACL设置为仅用户username拥有rwx权限,删除所有其他ACL条目。

  • -M:从文件读取ACL。用于从指定文件中读取ACL条目,并将其应用于目标文件或目录。
1
setfacl -M aclfile file

解释:从文件aclfile中读取ACL条目,并将其应用于文件file。

  • -X:从文件中删除ACL。用于从指定文件中读取要删除的ACL条目。
1
setfacl -X aclfile file

解释:从文件aclfile中读取要删除的ACL条目,并将其从文件file的ACL中删除。

ACL 条目格式

ACL条目格式为[d[efault]:][u[ser]:uid|g[roup]:gid|m[ask]|o[ther]]:perms,其中:

  • default:指定为默认ACL,仅适用于目录。
  • user:uid:用户权限条目。
  • group:gid:组权限条目。
  • mask:限制对文件的最大允许权限。
  • other:其他用户的权限条目。
  • perms:权限,r表示读取,w表示写入,x表示执行。

示例

  1. 为文件设置特定用户的读写执行权限:

    1
    setfacl -m u:john:rwx myfile

    为用户john设置文件myfilerwx权限。

  1. 为目录及其子目录和文件递归设置权限:

    1
    setfacl -R -m g:developers:rwx /mydir

    为组developers递归地设置目录/mydir及其内容的rwx权限。

  1. 删除某个用户的ACL条目:

    1
    setfacl -x u:john myfile

    移除用户john在文件myfile上的ACL条目。

  1. 查看文件的ACL:

    1
    getfacl myfile

    使用getfacl查看文件或目录的ACL条目。

设置目录下所有新创建的子目录和文件的默认权限为775

1
setfacl -m d:u::rwx,d:g::rwx,d:o::r-x /path/to/directory

解释:

d:u::rwx - 设置默认的用户权限为775 (rwx表示7)。
d:g::rwx - 设置默认的组权限为775 (rwx表示7)。
d:o::r-x - 设置默认的其他用户权限为775 (r-x表示5)。

感谢您的支持!