【分享】Linux文件目录ACL权限管理

热门标签

, , , ,

一一网络

做互联网综合资源分享云平台!。

立即加入一一网络

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

一、ACL 权限简介:

在linux系统中,用户对文件的操作权限有 r-读, w-写, x-可执行三种,我们将访问文件的用户分为三类,user,group,other。如果系统中某个用户想对某个文件有写入的权限,但是该用户是属于other,如果是这样,就只能够开放other的权限。但是一旦开放other的权限,那么所有人就对该文件有写入的权限了。文件的ACL权限就很好的解决了这个问题,它可以设置一个特定文件的特定权限

命令格式:

setfacl 参数选项 文件/目录名

参数选项:

-m 设定ACL权限
-x 删除指定用户,用户组的ACL权限,针对用户,用户组
-b 删除文件所有的ACL权限,针对文件
-d 设定默认ACL权限
-k 删除默认ACL权限
-R 递归设置ACL权限

二、开启ACL权限:

如果系统没有ACL软件,需要安装:
# yum -y install libacl acl

如果想拥有文件ACL的权限,就必须为文件系统添加一个ACL属性。查看分区是否开启ACL权限:
# mount | grep /dev/sda1
/dev/sda1 on /mnt type ext3 (rw) ---> 未开启

临时开启,系统重启失效:
# mount -o remount,acl /dev/sda
# mount | grep /dev/sda1
/dev/sda1 on /mnt type ext3 (rw,acl) ---> 已开启

永久启用ACL:
# vi /etc/fstab
示例:
/dev/sda1   /mnt   ext3   defaults,acl   1 2

三、设置ACL权限

1. 设置用户ACL权限:指定特定用户对此文件/目录拥有的r/w/x权限
命令格式: setfacl -m u:用户名:权限(rwx) 目录/文件名
使用示例: setfacl -m u:user1:rwx /aclTest
注意: 用户具体拥有的权限并不一定是设置acl时指定的权限,和设置的最大默认权限进行“与”操作后得到的权限为用户实际拥有的权限

2. 设置用户组ACL权限:指定特定用户组对此文件/目录拥有的r/w/x权限
命令格式: setfacl -m g:用户名:权限(rwx) 目录/文件名
使用示例: setfacl -m g:group2:rwx /aclTest
注意: 用户组中的用户具体拥有的权限并不一定是设置acl时指定的权限,和设置的最大默认权限进行与操作后得到的权限为用户组中的用户实际拥有的权限

3. 设置最大ACL权限:指定资源ACL权限的最大权限,防止给予用户/用户组ACL权限过高
命令格式: setfacl -m m:权限(rwx) 目录/文件名
使用示例: setfacl -m m:rwx /aclTest
注意: 如果不显示设置用户最大权限,那么默认最大权限为用户第一次设置ACL时指定的权限值

4. 设置递归权限: 指对目前此目录下的所有文件均进行此ACL设置
命令格式: setfacl -m u/g:用户名:权限(rwx) -R 目录
使用示例: setfacl -m u:user1:rw -R /aclTest
注意: 针对的是设置此ACL权限之前已经创建好的所有文件,都会默认新增此ACL权限,之后创建的文件不会新增此ACL限制

5. 设置默认权限: 指对之后此目录下新建的文件默认进行此ACL权限设置
命令格式: setfacl -m d:u/g:用户名:权限(rwx) 目录
使用示例: setfacl -m d:u:user1:rw /aclTest
注意:针对的是设置ACL权限之后新建的文件默认具有的ACL权限,无论是此目录的子文件,子子文件,新建后都会拥有此ACL权限

6. 最佳实践:
同时设置目录的默认权限和递归权限,确保此目录下新建的文件和目录目前所有的文件都具有相同的ACL权限
setfacl -m u:用户名:权限(rwx) -R 目录
setfacl -m d:u/g:用户名:权限(rwx) -R 目录

四、查看ACL权限:

1. 简单查看:
# ls -ld 目录名
设置了ACL权限的文件或目录,权限后会新增一个+

2. 查看ACL权限详情:
# getfacl 文件/目录名

五、删除ACL权限:

1. 删除文件或目录具体的ACL组/用户权限: setfacl -x u/g:用户名/组名 文件/目录名
# setfacl -x g:group2 /project/ : 删除/project 的group2 组ACL权限
# setfacl -x u:user1 /project/ : 删除/project 的user1 用户ACL权限

2. 针对文件或目录所有的ACL权限: setfACL -b 文件/目录名
# setfacl -b /project : 删除/project的所有ACL权限

3.移除文件的默认ACL属性:
# setfacl -k /mnt/redhat/

六、ACL 相关命令及注意事项:

1.前面的例子中我们都注意到了getfacl命令是用来读取文件的ACL, setfacl是用来设定文件的Acess ACL.

这里还有一个chacl是用来改变文件和目录的Access ACL and Default ACL. 它的具体参数大家可以去看man page.
我只想提及一下 “chacl -B 文件/目录”,它可以彻底删除文件或者目录的ACL属性(包括Default ACL).比如你即使用了setfacl -x删除了所有文件的ACL属性,那个+号还是会出现在文件的末尾,所以正确的删除方法应该是用chacl -B

2.用cp来复制文件的时候我们现在可以加上-p选项.这样在拷贝文件的时候也将拷贝文件的ACL属性.对于不能拷贝的ACL属性将给出警告

3.mv命令将会默认地移动文件的ACL属性. 同样如果操作不允许的情况下会给出警告

4.如果用chmod命令改变Linux 文件权限的时候相应的ACL值也会改变.反之改变ACL的值,相应的文件权限也会改变

未经允许不得转载:作者:admin, 转载或复制请以 超链接形式 并注明出处 一一网络
原文地址:《【分享】Linux文件目录ACL权限管理》 发布于2019-06-17

分享到:
赞(0)

评论 抢沙发

评论前必须登录!

  注册



【分享】Linux文件目录ACL权限管理

长按图片转发给朋友

一一网络
一一网络是一个做互联网的综合资源分享平台,邹洪博客,Emblog,Blog,免费,技术教程,破解源码,资源分享,永久免费,资源分享平台,免费破解,资源分享云平台,永久免费,技术教程分享网站,免费技术学习平台,一一网络是一个专注于网络资源开发和共享加建站教程、源码下载、WordPress主题、网站开发交流、程序软件下载、建站资源、多媒体交流、电影资源、Android软件分享为一体的多互动交流平台。