普通权限
Linux权限注意分为读、写、执行三种控制,使用ls -l 命令查看文件或目录信息时,系统会显示为 r (读取权限)、w(写入权限)、x(执行权限),以下ls -l 显示的信息:
[root@rhel8-3 ~]# ls -l
总用量 4
-rw-------. 1 root root 1213 9月 1 16:50 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 9月 14 16:14 nginx.log
第一列:第一个字符为文件类型:
- 代表普通文件
d 代表目录
l 代表链接文件
b/c 代表设备
三位一组分别为所有者权限、所属组权限、其他账户权限、rwxrwxrwx 表示文档所有者(user)、组(group)、其他账户(other)权限均为可读、可写、可执行,rwxr--r-- 表示文档所有者权限为读写执行,所属组权限为只读,其他账户权限为只读。
第二列:为链接数量或子目录个数
第三列:为文档的所有者
第四列:为文件的所属组
第五列:为容量
第六列:为最近文档被修改的月份
第七列:为文档被修改的日期
第八列:为文档被修改的时间
第九列:为文件或目录名称
对于权限的表示,除了可以使用比较直观的rwx表示外,还可以使用数字表示
数字 | 字符 | 文件 | 目录 |
---|---|---|---|
4 | r | 查看文件内容 | 查看目录下的文件与目录名称 |
2 | w | 修改文件内容 | 在目录下增、删、改文件与目录名称 |
2 | x | 可执行、一般为程序或脚步 | 可以用cd命令进入该目录 |
数字字符文件目录4r查看文件内容查看目录下的文件与目录名称2w修改文件内容在目录下增、删、改文件与目录名称1x可执行,一般为程序或脚步可以用cd命令进入该目录
特殊权限
SUID:u+s,让进程不再属于它的发起者,而是属于程序文件本身。(suid只对二进制文件有效;调用者对该文件有执行权;在执行过程中,调用者会暂时获得该文件的所有者权限;该权限只在程序执行的过程中有效)
注:SUID仅可用在二进制文件(binary file),而且对目录无效。
SGID:g+s
SGID可以用在两个方面:
1. 文件:如果SGID设置在二进制文件上,无论用户是谁,在执行该程序的时候,它的有效用户组将会变成该程序的用户组所有者;
2. 目录:如果SGID是设置在A目录上,则在该A目录内所建立的文件或目录的用户组,将会是此A目录的用户组。
练习题:创建共享目录/test,share组的用户对/test目录里的文件可读可写。
1、创建/test,修改属组为share
2、g+s 共享目录里面新创建的文件属组是share
sticky:o+t,不能够删除其他用户在同目录里创建的文件,可删除自己创建的文件
一般用于目录上,对文件的意义不大。sticky对目录的作用是:在具有t权限的目录下,用户若在该目录下具有w及x权限,则当用户在该目录下建立文件或目录时,只有文件拥有者与root才有权利删除。sticky可以理解为防删除位。如果希望用户能够添加文件但同时不能让其他人删除文件,则可以对文件使用sticky位。设置该位后,就算用户对该文件的父目录具有写权限,也不能删除文件。
练习题:
1.创建目录/test
2.添加三个用户
3.让每一个用户在目录里面写文件
4.用户3删除1和2用户的文件
5.目录 o+t
6.重复3、4步操作,验证是否能够删除其他用户在同目录里创建的文件
隐藏权限
linux系统中除了一般权限和特殊权限外还有一种隐藏权限,默认情况下并不会被用户发现,这种可以提高linux系统的安全性。
设置方式
语法:
chattr:可以设置隐藏权限
# 语法
chattr [参数] 文件
# “+参数”是添加隐藏权限;
# “-[参数]”是将隐藏的权限移除。
lsattr:可以查看用户是否拥有隐藏权限。
参数描述
参数 | 作用 |
---|---|
i | 无法对文件进行修改;若对目录设置该参数,则仅能修改其中的子文件内容而不能在目录中新建和删除内容。 |
a | 仅允许追加内容,无法覆盖/删除内容(该文件也无法删除) |
S | 文件内容变更后立即同步到硬盘 |
s | 彻底从硬盘中删除,不可恢复(用0填充原文件所在的硬盘区域) |
A | 不再修改文件或目录最后的访问时间 |
b | 不再修改或目录的存取时间 |
D | 检查压缩文件中的错误 |
d | 使用dump备份时忽略本文件/目录) |
c | 默认将文件或目录进行压缩 |
u | 当删除该文件时依然保存其在硬盘中的数据,方便日后恢复 |
t | 让文件系统自持尾部合并 |
X | 可以直接访问压缩文件中的内容 |