本文是自己学习的总结,仅以作分享。若有不对的地方欢迎指正。
一、文件权限与归属
Linux 系统中的一切都是文件,但每个文件的类型不尽相同,并且可以用不同的符号来加以区分
-:普通文件
d:目录文件
l:链接文件
b:块设备文件
c:字符设备文件
p:管道文件
Linux 每个文件都有其相对应的所有者和所有组,还有分别规定对所有者、所有组和其他人的可读、可写、可执行的权限。
读( read),写 ( write),执行 (execute),简写即为 r、w、x ,亦可用数字 4,2,1 表示。
若某个文件的权限为 7 则代表可读,可写,可执行 (4+2+ 1)
一般文件的权限设置,可读权限就是能够读取该文件的实际内容;可写权限就是能够编辑、新增、修改文件的实际内容;可执行则代表能够运行一个脚本程序的权限。
目录文件的权限设置,可读权限就是能够读取该目录内的结构和文件列表;可写权限就是能够更改目录内文件结构列表、新增、删除、重命名文件;可执行代表进入该目录的权限。
二、文件特殊权限
特殊权限位是针对于文件设置的一种特殊的功能 ,而且与一般权限可同时出现使用,弥补一般权限不能实现的功能。
SUID:让执行者临时拥有属主的权限,即让本来没有相应权限的用户运行这个程序时 ,可以访问他没有权限访问的资源 。
当 s 这个标志出现在文件所有者的 x 权限上时,此时就被称为 Set UID ,简称为 SUID 。
SUID仅对拥有执行权限的二进制程序有效(系统中的一些命令);不能用在脚本上( script );也不能放到目录上,放上也是无效的 。
chmod u+s filename:给filename添加SUID
chmod u-s filename:删除filename的SUID
SGID功能一 :让执行者临时拥有属组的权限
SGID 功能二 :在该目录中创建的文件自动继承此目录的用户组(只针对目录设置)
chmod g+s filename:给filename添加SGID
chmod g-s filename:删除filename的SGID
SBIT:只可管理自己的数据而不能删除他人文件(仅对目录有效)。SBIT特殊权限位,也可以叫做特殊权限位之粘滞位 。
chmod o+t filename:给filename添加SBIT
chmod o-t filename:删除filename的SBIT
三、文件访问控制列表(ACL)
一般权限 、特殊权限、隐藏的共性是针对某一类用户设置的。对某个指定的用户进行单独的权限控制 ,就需要用文件的访问控制列表来实现 。
对某个目录设置了访问控制策略 ,那么其子文件则继承其访问策略 。
对文件设置了访问控制策略,则不再继承上级目录的控制策略。
ls 命令是看不到访问控制列表信息的,却可以看到文件权限最后一个 点(.) 变成了加号( +),这就意味着个文件已经被设置有了 ACL 。
chmod:修改文件或目录的属主或属组
-R:递归处理
chmod 777 passwd:设置passwd文件权限为属主、属组、他人都可以读、写、执行
chmod u-x,g-wx,o-wx passwd:设置passwd文件权限为属主可读写、属组与他人只能读
chown:修改文件或目录的属主或属组
-R:递归处理
chown ramble:ramble passwd:将passwd的属主与属组设置为ramble
chattr:设置文件的隐藏权限(被隐藏起来的权限)
i:无法对文件进行修改 ,若对目录设置后则仅能修改子文件而不能新建或删除
a:仅允许补充(追加)内容 ,无法覆盖 /删除 (Append Only)
A:不再修改这个文件的最后访问时间 (atime)
u:当删除此文件后依然保留其在硬盘中的数据,方便以后恢复
chattr +i 111.txt:禁止修改111.txt文件
chattr -i 111.txt:删除111.txt的隐藏权限i
lsattr:显示文件的隐藏权限
lsattr 111.txt:查看111.txt的隐藏权限
setfacl:修改ACL规则
-R:递归处理
-m:对普通文件需使用
-b:删除某个文件的访问控制策略
setfacl -Rm u:test:--- /root:普通用户test没有查看/root目录的权限
setfacl -b /root:删除/root目录的隐藏权限
getfacl:显示文件ACL