Linux的ACL权限

ACL权限

概述

普通权限设置只能针对三类人:属主、属组、其他,针对超出三类人以上的权限,我们使用文件的普通权限无法实现了。应对类似这种非常复杂的权限问题,如何解决?文件的ACL权限(Access Control List 访问控制列表)。

ACL就是对访问进行控制的一张表。文件的ACL设置可以通过ACL让指定的某个用户或者用户组队对某个文件设置特别的权限(后门)。

常用命令

setfacl详解

setfacl 命令允许用户为文件或目录设置访问控制列表(ACL)。ACL允许用户为单个文件或目录添加或删除特定用户或组的权限,而不是使用标准的用户和组许可。

基本语法

以下是 setfacl 命令的基本语法:

setfacl [选项] [文件/目录]

选项

以下是 setfacl 命令的常用选项:

  • m:添加新的ACL项。
  • x:删除ACL项。
  • R:递归地为目录及其子目录设置ACL。
  • b:删除文件或目录的所有ACL。
  • k:删除默认ACL。

示例

以下是 setfacl 命令的示例:

1.为文件添加ACL:

setfacl -m u:john:rw file.txt

此命令将给用户 john 添加对 file.txt 文件的读写权限。

2.为目录添加ACL:

setfacl -m g:developers:rwx /var/www/html

此命令将给组 developers 添加对 /var/www/html 目录的读、写和执行权限。

3.递归地为目录及其子目录设置ACL:

setfacl -R -m u:john:rw /var/www/html

此命令将给用户 john 添加对 /var/www/html 目录及其子目录的读写权限。

4.删除ACL:

setfacl -b file.txt

此命令将删除 file.txt 文件的所有ACL。

结论

setfacl 命令是管理文件和目录访问权限的强大工具。它允许用户为单个文件或目录添加或删除特定用户或组的权限。通过使用 setfacl 命令,用户可以更好地控制对文件和目录的访问。

getfacl详解

getfacl是Linux/Unix系统中的一个命令,用于查看文件或目录的访问控制列表(ACL),它可以显示文件或目录的ACL信息,也可以将ACL信息保存到文件中备份或恢复。

语法

getfacl [OPTIONS] FILE

选项

以下是getfacl命令的一些常用选项:

选项描述
-R递归显示目录下所有文件和子目录的ACL信息
-p显示权限信息,而不仅仅是ACL信息
-s显示ACL信息的摘要信息
-b显示ACL信息的二进制格式
-n显示UID和GID而不是用户名和组名
-h显示ACL信息时,将UID和GID转换成对应的用户名和组名

示例

以下是一些getfacl命令的示例:

  • 显示文件的ACL信息
$ getfacl file.txt

  • 显示目录的ACL信息
$ getfacl /path/to/directory

  • 将文件的ACL信息保存到文件中
$ getfacl file.txt > file.acl

  • 将目录的ACL信息保存到文件中
$ getfacl -R /path/to/directory > directory.acl

结论

getfacl是一个非常有用的命令,它可以让用户查看和管理ACL信息,从而更好地控制文件和目录的访问权限。通过掌握getfacl命令的使用方法,用户可以更好地管理系统资源,保护系统安全。

注意事项

使用getfacl命令来查看文件的ACL权限,文件一旦设置了acl权限,那么该文件的9列权限后就变成+,此时该文件表面上看到的权限全部都不一定生效,如果想看该文件的真实权限,需要使用getfacl来查看。例如:getfacl file.txt。文件的ACL规则格式如下:

#file: 1.txt
#owner: z
#group: z
user:user1:rwx
user:user2:rw
group:group1:rwx
group:group2:rw

上述4行表示的意思是:user1对该文件有rwx权限,user2对该文件有rw权限,group1组的用户对该文件有rwx权限,group2组内的用户对该文件有rw权限。":"将3列分隔开了。如果第一列是user,第二列没有值,就表示该行设置的是owner的权限;如果第一列是group,第二列没有值,就表示该行设置的是group的权限;如果第一列是other,那么该行表示other的权限,other总在最后一行;如果第一列是mask,表示acl的最高权限,表示acl设置的权限不能超过mask的权限(只用来限制非拥有者,非root用户)。

ACL表由上至下匹配的,匹配到之后就停止匹配(第一个匹配到的那个就是它的权限),例如,hzz用户对该文件无任何权限。

针对目录设置acl权限意义不大,目录的权限只有三类才有意义:—、rwx、r-x。恰好目录有三类有意义的权限,针对三类人设置即可满足。一般我们对目录设置的acl权限和对普通文件设置的acl权限意义不一样,我们希望对目录设置的acl权限是,当一个新的文件在目录中被创建的时候,默认携带的acl权限。对目录设置默认的acl权限,针对目录设置acl权限的目的不在于访问控制,而在于acl权限的继承。使用setfacl -m d:u:hzz:r test/命令来设置目录的ACL权限,default开头的行,default开头的所有字段,表示在该目录下创建的文件,会继承的acl权限。

设置mask权限,可以使用setfacl -m mask::r-x file.txt命令,给目录设置mask权限可以使用setfacl -m d:mask::r-x test命令。权限位的最后一位是+号表示有acl权限。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值