一、ACL概念:
1、什么是ACL(访问控制列表)?为什么要引用ACL?
当文件由单个人和指定的一组人使用时,标准的文件访问权限即可满足要求。但是,此时如果要指定多个用户和组以不同的文件权限来访问文件,此时就要引入ACL。
假设现在网络是一个公司,财务部的资料仅可财务部以及内部的人员读取修改,其他人不具有访问权限。现在新来了一位成员,但是管理者只想给他设置读取权限,不设置其他权限,此时就要引入ACL来对这个新成员设置特定的权限。
2、设置ACL的文件和目录特点:
新文件和子目录会自动从父目录的默认ACL中继承ACL设置,但是父目录至少需要执行权限。即当前设置了ACL的目录中创建新文件和目录时,新建的文件和目录会拥有和父目录相同的ACL设置。
二、查看ACL:
ls -l #仅输出最少的ACL设置详细信息,权限字符串末尾的加号(+)表示该文件存在ACL
注意:此时显示的组权限是ACL掩码,而不是组所有者的设置,同样地使用chmod更改ACL的组权限时,修改的是ACL掩码,而不是组所有者权限,并且其他用户的ACL设置无访问权限。
1、查看文件和目录ACL:
getfacl file/directory #查看文件或目录上的ACL
(1)用户条目、组条目中:
两个冒号(::)是文件或组所有者,一个冒号(:)是指定的用户或组,ACL掩码将限制有效权限为rw
(2)默认用户和组条目:
用户名或组名前加default:
(3)默认ACL掩码(d:u/d:g)
确保后面目录中新建的文件或目录拥有指定用户、指定组和组所有者ACL设置
(4)ACL掩码:
可授予指定用户、组所有者和指定组的最大权限,但不限制文件所有者或其他用户的权限
(5)其他条目:
其他或全局权限,所有其他的UID和GID均无任何权限
2、大写字母X :
当添加执行权限时,如果文件的用户、组和其他用户没有一个拥有执行权限,那么无法直接使用a+X给用户、组和其他用户添加执行权限,此时只能给目录添加执行权限。
3、ACL权限优先级:
(1)如果以文件所有者身份运行进程,则应用文件的所有者的ACL。
(2)如果以 ACL 条目中列出的用户身份运行进程,则应用指定用户 ACL(只要mask允许。
(3)如果以文件的组所有者身份运行进程,或以 ACL 条目的 group 身份运行进程,则应用相匹配的 ACL(只要 mask 允许) 否则,将应用文件的 other ACL。
setfacl #更改(添加、修改或删除)文件和目录的标准ACL,短划线(-)表示缺少相关权限
setfacl –m #添加或修改用户ACL或指定ACL
setfacl –x #删除特定的ACL条目(只会从文件或目录ACL中删除指定用户和指定组,其他ACL条目仍保持活动)
setfacl –b #删除文件或目录的所有ACL条目,包括默认的ACL
setfacl –k #删除目录的所有默认ACL条目
注意:
(1)chmod对于ACL设置的文件,只能更新ACL掩码,对任何权限没有影响
(2)也可以使用同一命令添加多个条目,用逗号分开
(3)也可结合-R选项以递归方式应用ACL,此时要注意X的使用,只有目录会设置执行权限
(4)掩码只能在未设置其他ACL的情况下删除