现有一目录是虚拟机和linux共享的,但是每次程序调用新建的文件都发现没有权限。
于是指定特定目录及其子目录下新建的文件或目录对于用户qhfz都有读写执行的权限
-R表示递归 -m表示设置文件acl规则
setfacl -R -m d:u:qhfz:rwx /data2/ResourceCase
setfacl -R -m d:u: ResourceCase:rwx /data2/ResourceCase
--删除ACL规则使用-b
setfacl -R -b /data2/ResourceCase
上面的d:u:详见如下,而perms对应的是rwx:
setfacl命令可以识别以下的规则格式。
[d[efault]:][u[ser]:]uid[:perms]
指定用户的权限,文件所有者的权限(如果uid没有指定)。
[d[efault]:]g[roup]:gid[:perms]
指定群组的权限,文件所有群组的权限(如果gid未指定)
[d[efault]:]m[ask][:][:perms]
有效权限掩码
[d[efault]:]o[ther][:perms]
#perms域是一个代表各种权限的字母的组合:读:r 写:w 执行:x,执行只适合目录和一些可执行的文件。perms域也可设置为八进制格式0~7。
#其他的权限
Usage:setfacl[-bkndRLP]{-m|-M|-x|-X...}file... # -m|-M|-x|-X
-m,--modify=acl modify the current ACL(s)of file(s) #设置文件acl规则
-M,--modify-file=file read ACL entries to modify from file #从文件读取访问控制列表条目更改
-x,--remove=acl remove entries from the ACL(s)of file(s) #删除文件的acl规则
-X,--remove-file=file readACL entries to remove from file #从文件读取访问控制列表条目并删除
-b,--remove-all remove all extended ACL entries # 删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留.
-k,--remove-default remove the defaultACL #删除缺省的acl规则。如果没有缺省规则,将不提示.
--set=acl set the ACL of file(s),replacing the current ACL.
--set-file=file readACL entries toset from file #从文件中读设置ACL规则.
--mask dorecalculate the effective rights mask #重新计算有效权限,即使ACL mask被明确指定.
-n,--no-mask don'trecalculate the effective rights mask #不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定.
-d,--default operations apply tothe defaultACL #设定默认的acl规则,针对目录而言.
-R,--recursive recurse into subdirectories #递归的对所有文件及目录进行操作.
-L,--logical logical walk,follow symbolic links #跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录。
-P,--physical physical walk,donotfollow symbolic links #跳过所有符号链接,包括符号链接文件。
--restore=file restore ACLs(inverse of`getfacl-R') #从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行.
--test testmode(ACLs are notmodified) #测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出.
-v,--version print version andexit #版本.
-h,--help thishelp text #不用说肯定是帮助了.
当使用-M,-X选项从文件中读取规则时,setfacl接受getfacl命令输出的格式。每行至少一条规则,以#开始的行将被视为注释.