隐藏属性
lsattr 文件 //查看有没有隐藏属性
chattr +i 文件 //i属性:不能改、不能删除、不能作为连接
chattr -i 文件 //去掉i属性
chattr +a 文件 //a属性:只能做累加动作
比如:echo "123" >>file (写入123,一个大于号时为覆盖)
ACL
getfacl file 显示ACL
setfacl 用于设置或修改文件的acl
setfacl -m u:friend:rw filename #授予rw权限给friend用户
setfacl -m g:grads:rw filename
setfacl -m g:profs:r filename
setfacl -x u:friend filename #移除friend现有acl
setfacl -m o::- filename #更改other组拒绝
权限优先级:
在确定某个进程(即某个运行程序)是否能够访问某一文件时,可以按照以下方式应用文件权限和acl:
1.如果是以拥有该文件的用户身份运行该进程,那么可应用该文件的用户权限
2.另外,如果是作为列于用户acl条目中的用户运行进程,那么应用用户acl(只要受mask允许)
3.另外,如果是以与拥有该文件的组相匹配的组身份或以具有明确组acl条目的组身份运行该进程,如果权限是由任意匹配组授予的,则应用该权限(只要mask许可)
4.否则,应用文件的其他权限
ACL掩码:
具有ACL的文件拥有一个“mask”(掩码),这个掩码既能够限制拥有该文件的组的最大权限,又能够限制acl 中的补充用户和组所拥有的最大权限。
getfacl file 将当前掩码显示为mask::permissions
由ls -ld file 显示的组权限也反映了当前掩码(并非所拥有组的权限!)
默认acl(继承):
目录可以有“默认acl“条目,系统自动针对在该目录中创建的新文件设置这些条目
setfacl -m d:u:test:rw directory (目录)将设置默认acl条目,授予用户elvis对在directory 中创建的所有新文件的读写访问权限。
这类似于setgid 权限的方法(针对目录设置时),使得在该目录中创建的新文件归拥有该目录的组所有。
练习:
使用acl授予和限制访问权限
研究生需要名为 /opt/research 的协作目录,用于存储他们的研究成果。只有组profs和grads 中的成员能够在该目录创建新文件,并且新文件应具有以下的属性:
目录应归用户root所有
新文件应归组grads所有
教授(组profs的成员)应自动拥有对新文件的读/写 访问权限。
暑期实习生(组interns 的成员)应自动拥有对新文件的只读访问权限
其他用户(不是组profs,grads或 interns 的成员)绝对不能拥有对该目录及其内容的访问权限。
参考答案
# mkdir /opt/research
# chgrp grads /opt/research
# chmod 2770 /opt/research
# setfacl -m g:profs:rwx /opt/research
# setfacl -m g:interns:rx /opt/research
# setfacl -m d:g:profs:rwx /opt/research
# setfacl -m d:g:interns:rx /opt/research
# setfacl -m d:o::- /opt/research