ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 文件扩展权限ACL

文件扩展权限ACL

原创 Linux操作系统 作者:波仔strong 时间:2018-05-09 15:28:39 0 删除 编辑

文件扩展权限ACL

扩展ACL :access control list

ACL(Access Control List)即访问控制列表。主要是针对单一用户,单一文件或目录进行rwx权限的细部设定。可以针对用户(User)、群组(Group)、默认属性掩码(umask)进行设置。


ACL权限的开启

1.查看acl权限是否支持(文件系统是否支持ACL权限):

    a.ext4文件系统:使用 dumpe2fs -h /dev/sda3 来查看超级块中的信息,

里面有 Default mount options:    user_xattr acl 或者使用 mount 查询

    b.xfs文件系统 :xfs系统貌似已经强制开启了ACL权限了

2.开启acl权限

    a.临时开启:mount -o remount,acl / (remount:重新挂载;[,acl]添加acl权限;[/]分区)

    b.永久开启:编辑我们开机挂载文件/etc/fstab


ACL参数

getfacl:取得文件或目录的ACL设置信息。 

-a , --access:显示文件或目录的访问控制列表。

-d , --default:显示文件或目录的默认(缺省)的访问控制列表。

-c , --omit-header:不显示默认的访问控制列表。

-R , --recursive:操作递归到子目录。

-t , --tabular:使用列表输格式出ACL设置信息。

-n , --numeric:显示ACL信息中的用户和组的UID和GID。

-p , --absolute-names:

-v , --version:显示命令的版信息

-h , --help:显示命令帮助信息。

setfacl:设置文件或目录的ACL设置信息。

-m, --modify=acl:修改文件或目录的扩展ACL设置信息。

-M, --modify-file=file:从一个文件读入ACL设置信息并以此为模版修改当前文件或目录的扩展ACL设置信息。

-x, --remove=acl:从文件或目录删除一个扩展的ACL设置信息。

-X, --remove-file=file:从一个文件读入ACL设置信息并以此为模版删除当前文件或目录的ACL设置信息。

-b, --remove-all:删除所有的扩展的ACL设置信息。

-k, --remove-default:删除缺省的acl设置信息。

--set=acl:设置当前文件的ACL设置信息信息。

--set-file=file:从文件读入ACL设置信息来设置当前文件或目录的ACL设置信息。

--mask:重新计算有效权限,即使ACL mask被明确指定。

-n, --no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。

-d, --default:设置默认的ACL设置信息(只对目录有效)。

-R, --recursive:操作递归到所有子目录和文件。

-L, --logical:跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录。

-P, --physical:跳过所有符号链接,包括符号链接文件。

--restore=file:从文件恢复备份的acl设置信息(这些文件可由getfacl -R产生<---针对目录)。通过这种机制可以恢复整个目录树的acl设置信息。此参数不能和除--test以外的任何参数一同执行。

--test:测试模式,不会改变ACL设置信息。

-v, --version:显示程序的版信息。

-h, --help:显示帮助信息。

chacl:同setfacl,也是用来设定ACL设置信息。用法类似于chmod。不常用。



例1:设置用户mk对文件a.txt拥有的rwx权限 ,mk不属于a.txt的所属主和组,mk是other。怎么做?

以root身份创建文件a.txt

[root@xuegod63 ~]# touch /tmp/a.txt


查看acl权限,这里可以看到拥有者和属组都是root

[root@xuegod63 ~]# getfacl /tmp/a.txt

getfacl: Removing leading '/' from absolute path names

# file: tmp/a.txt

# owner: root

# group: root

user::rw-

group::r--

other::r—


这里我们让mk用户对a.txt拥有rwx权限

setfacl -m u:mk:rwx /tmp/a.txt u: 设置某个用户拥有的权限


再次查看acl权限

[root@xuegod63 ~]# getfacl /tmp/a.txt

getfacl: Removing leading '/' from absolute path names

...

user::rw-

user:mk:rwx


切换到mk用户,发现可以编辑,并且查看权限

[mk@xuegod63 ~]$ vim /tmp/a.txt

[mk@xuegod63 ~]$ ll /tmp/a.txt

-rw-rwxr--+ 1 root root 8 5月 8 22:42 /tmp/a.txt



例2: 给目录加扩展权限

[root@xuegod63 ~]# mkdir /tmp/test

#setfacl -m d:u:mk:rwx /tmp/test #d 默认在就是有这个权限


例3:给目录下所有文件都加扩展权限

[root@xuegod63 ~]# setfacl -R -m u:lee:rw- testdirectory/ 

#-R一定要在-m前面,表示目录下所有文件

[root@xuegod63 ~]# setfacl -x u:mk /tmp/a.txt # 去掉单个权限

[root@xuegod63 ~]# setfacl -b /tmp/a.txt # 去掉所有acl权限

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31485142/viewspace-2154233/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2017-08-25

  • 博文量
    87
  • 访问量
    91912