Alex_McAvoy

想要成为渔夫的猎手

Linux 中 ACL 的使用

【访问控制列表 ACL】

访问控制列表(Accesss Control List,ACL)在 Linux 中用于设定用户针对文件的权限设置

在传统的权限设置中,用户对文件只有三种身份,属主 owner、属组 group、其他 othres,每种用户身份拥有读 read、写 write、执行 execute 三种权限,但在实际应用中,需要对文件或目录进行具体的设置,此时就需要使用 ACL 来进行设置

ACL 可以提供以下支持:

  • 用户 user:针对用户来设置权限
  • 用户组 group:针对用户组来设置权限
  • 默认属性 mask:在某目录下新建文件或目录时设置默认权限

【setfacl 命令】

setfacl 命令用于设置某个文件或目录的 ACL 设置项,其命令格式为:setfacl [选项] filename

常见选项有:

  • -m:后跟 ACL 参数,用于设置 ACL 参数,不可与 -x 选项合用
  • -x:后跟 ACL 参数,用于删除 ACL 参数,不可与 -m 选项合用
  • -R:递归设置 ACL 参数,即子目录及文件同样会被设置 ACL 参数
  • -d:设置默认 ACL 参数,只对目录有效,在该目录新建的数据都会引用该默认值
  • -b:删除所有 ACL 参数
  • -k:删除默认 ACL 参数

在设置 ACL 参数时,一般采用 u:用户:权限g:用户组:权限o:其他:权限 的形式设置,当一个文件或目录设置 ACL 参数后,其权限部分会多一个 + 号,代表该文件或目录经过了 ACL 设置,此时看到的权限与实际权限可能存在误差

【getfacl 命令】

在通过 setfacl 命令设置 ACL 参数后,看到的权限与实际权限可能存在误差,此时若想查看文件或目录的实际权限,可以通过 getfacl 命令来取得其具体的 ACL 设置项,命令格式为:getfacl filename

感谢您对我的支持,让我继续努力分享有用的技术与知识点!