携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情
查看系统是否可以设置ACL
#若查看下面有标红的字样,证明可以使用 dmesg | grep -i acl
\
setfacl常用参数
用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ... -m, --modify-acl 更改文件的访问控制列表 -M, --modify-file=file 从文件读取访问控制列表条目更改 -x, --remove=acl 根据文件中访问控制列表移除条目 -X, --remove-file=file 从文件读取访问控制列表条目并删除 -b, --remove-all 删除所有扩展访问控制列表条目 -k, --remove-default 移除默认访问控制列表 --set=acl 设定替换当前的文件访问控制列表 --set-file=file 从文件中读取访问控制列表条目设定 --mask 重新计算有效权限掩码 -n, --no-mask 不重新计算有效权限掩码 -d, --default 应用到默认访问控制列表的操作 -R, --recursive 递归操作子目录 -L, --logical 依照系统逻辑,跟随符号链接 -P, --physical 依照自然逻辑,不跟随符号链接 --restore=file 恢复访问控制列表,和“getfacl -R”作用相反 --test 测试模式,并不真正修改访问控制列表属性 -v, --version 显示版本并退出 -h, --help 显示本帮助信息
\
setfacl的选项:
设置:setfacl [选项] 权限 文件名 -m 修改或添加acl权限 -x 删除指定的acl权限 -b 删除所有的acl权限 -k 删除默认的acl权限 -d 设置默认的acl权限,通常用于目录,后期在目录中创建的新文件将采用这个acl权限值 -R 递归设置目录及其子目录中的文件的acl权限
\
getfacl常用参数
getfacl 2.2.49 -- get file access control lists Usage: getfacl [-aceEsRLPtpndvh] file ... -a, --access display the file access control list only -d, --default display the default access control list only -c, --omit-header do not display the comment header -e, --all-effective print all effective rights -E, --no-effective print no effective rights -s, --skip-base skip files that only have the base entries -R, --recursive recurse into subdirectories -L, --logical logical walk, follow symbolic links -P, --physical physical walk, do not follow symbolic links -t, --tabular use tabular output format -n, --numeric print numeric user/group identifiers -p, --absolute-names don't strip leading '/' in pathnames -v, --version print version and exit -h, --help this help text
查看一个文件的acl
getfacl 文件的名字 [root@localhost ~]# setfacl -m u:wzx:rw- test [root@localhost ~]# getfacl test # file: test # owner: root # group: root user::rwx user:wzx:rw- 第一次查看的时候,没有(然后添加了一个权限,又多一个用户) group::r-x mask::rwx other::r-x
给wzx用户想test文件添加读与写的权限
[root@localhost ~]# setfacl -m g:wzx:r-w test [root@localhost ~]# getfacl test # file: test # owner: root # group: root user::rwx user:wzx:rw- group::r-x group:wzx:rw- 多出来了一个用户组 mask::rwx other::r-x
\
例子
setfacl -m u::rwx test #设置默认用户,读,写,可执行 setfacl -x u:tank test #清除tank用户(u),对test文件acl规则 setfacl -b test 清空所有acl
\
= 表示给文件或目录设定一些属性
\
- 表示给文件或目录添加熟悉
\
- 表示移除文件或目录拥有的默写特性
举例说明1
[root@localhost ~]# setfacl -m u:wzx:rwx test [root@localhost ~]# getfacl test # file: test # group: root # owner: root user::rwx user:wzx:rwx group::r-x mask::rwx other::r-x [root@localhost ~]# setfacl -x u:wzx test [root@localhost ~]# getfacl --omit-header test # file: test # owner: root # group: root user::rwx group::r-x mask::r-x other::r-x
\
使用getfacl查看的时候,必须是在绝对路径中查看。
--omit-header
owner: root 注:前面三个以#开头的定义了文件名file,owner,group。这些信息没有太大的作用,接下来我们可以用--omit-header去掉
\
设置组的话
只需要吧setfacl -m u:wzx:rw- 中的u改为g即可
设置mask的话
setfacl -m u:wzx:rw- 中的u改为m,并且这个给其他的都差不多
设置其他的时候,
不能指定用户或者组了,因为它本身就是除了某些组,某些用户之外的其它所有人 [root@localhost ~]# setfacl -m o::rwx ddd [root@localhost ~]# getfacl ddd # file: ddd # owner: root # group: root user::rwx group::r-x other::rwx
\
在使用-R时,记得放在-m前面,否则不可以-------------------------------------重要()
\
使用-d的话,就会把默认的加上去,针对目录-----------------------------------还行()
\
\
为什么要使用setfacl,不使用chmod呢
答: setfacl命令可以用来细分liunx下的权限,chmod命令可以吧文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更准确
用法:
setfacl -m u:apache:rwx file :设置apache用户对file文件的rwx权限 setfacl -m g:market:rwx file :设置marker用户组对file文件的rwx权限 setfacl -x g:marker file :删除marker组对file文件的所以权限 getfacl file :查看file文件的权限
\
setfacl -m:是创建的意思 setfacl -x:是删除的意思 选项-m,-x后面跟以acl规则。多条acl规则以逗号(,)隔开 例如$ setfacl -m u:tester:rwx,g:tester1:r aclfile
\
\
如果用getfacl去查看的时候,查看的那个目录,一定要在绝对路径
\
setfacl -R -m d:u:wzx:rwx /data/resource/ -R表示递归 -m表示设置文件acl规则
\
\
\
setfacl给指定的用户设置指定目录,其它目录无法访问。新增一个yja用户,这个用户只能访问/datadisk1/aa目录,不能访问/datadisk1以下的目录
\
准备的条件 先创建一个用户yja,以及设置密码,创建目录/datadisk1,/datadisk/aa/ 1.修改/datadisk1跟目录 chmod -R 0700 /datadisk1 2.设置用户可以访问的目录 setfacl -m u:yja:r-x /datadisk1 setfacl -m u:yja:rwx /datadisk1/aa/ 3.设置组可以访问的目录 setfacl -m g:dev:r-x /datadisk1 setfacl -m g:dev:r-x /datadisk1/aa/ setfacl -x u:yja /datadisk1 setfacl -x g:dev /datadisk1 5.查看ACL权限 getfacl /datadisk1
\
查看文件系统是否支持acl权限控制:
[root@wangzhenxin-lin01 ~]# tune2fs -l /dev/sda1 | grep option Default mount options: user_xattr acl
\
在dir目录下,建立的所以文件都可以被wzx用户所访问
setfacl -d -m u:wzx:rw ./dir getfacl --omit-header ./dir
\
重要的
表示说st用户对 project 目录中新建立的文件拥有 权限。(只对目录生效,指目录中新建立的文件拥有此默认权限) setfacl -m d:u:st:rx /project 表示 st 用户对已存在于 project 目录中的子文件和子目录拥有 rx 权限。(指设定的 ACL权限会对目录下的所有子文件生效) setfacl -m u:st:rx -R /project 如果test目录下面有文件的话,我们执行这一条命令,test下面的所有目录都会有继承test父目录的acl权限 setfacl -R -m u:wzx:rwx test 对目录设定的默认 ACL 权限,可直接使用 setfacl -k 命令删除 setfacl -k /project
\
setfacl -b 文件名
\
setfacl -x u:wang 文件名