Skip to content

Linux扩展权限控制ACL

Linux基本都权限控制一定不陌生,每个文件/文件夹基于 user group other 三种用户身份分别具有读、写、执行的权限,我们可以用chmod命令来修改。但是这种设置方式比较比较简单暴力。比如我某个密码文件我需要能被执行程序读取但不希望被同一主机的其他用户读取。如果单通过群组、用户的方式授权,就有诸多不便。于是Linux提供了一个扩展的权限控制方式——ACL ( Access Control List )。

ACL也是一种用户和组的授权方式,特别之处就是对于不同用户和不同组可以设置不同的权限。而Linux默认情况只属于一个用户和组,设置权限也就只能针对这个用户和组。

ACL主要有两个操作命令

setfacl设置ACL

看一个授权的例子

有个test.txt的拥有者是root,test用户身份属于other,没有任何权限,用test用户身份读取文件被拒绝。

setfacl设置test用户具有r权限,然后我们看到test.txt文件的权限部分前面没有任何变化,但是最后面多了一个+,意思就是这里启用了扩展权限。这时我切换为test用户后读取文件返回了正确的结果。

getfacl查看文件的ACL信息

有set就有get,所以这个命令就是用来查看设置结果的。

应该不难看懂,但是下面有个mask需要特别解释一下,可以翻译为掩码,通常是与权限做位与运算。也可以理解为权限范围,mask里面没有的权限即使设置了也是不生效的。

看上面例子,test用户的权限是rwx,mask也是rwx,我们设置mask为r后发现上面test和group的权限后面写了一个注释写名有效权限是r就是mask的作用。

分享到:
Published in程序猿的东西

Be First to Comment

发表评论