特殊权限suid、sgid、sbit、chattr、umask
简单了解下什么是特殊权限
特殊权限为基本说明: Linux系统基本权限位有9位,但还有额外3位权限位,共12位权限位:
suid s(有x) S 4 用户对应的权限位(用户对应的3位上)
sgid s(有x) S 2 用户组对应的权限位(用户组对应的3位上)
sticky t(有x) T 1 其他用户对应的权限位
SUID(set UID)
针对命令和二进制程序的,当普通用户执行某个(passwd)命令的时候,可以拥有这个命令对应用户的权限,即让普通用户可以以root用户的角色执行程序或命令。
例如:如果给vim或者rm命令设置了setUID,那么任何文件都能编辑或者删除了,相当于有root权限了
此权限只针对二进制可执行程序有效
chmod u+s filename # 如果没有执行权,大写S
或者
chmod 4700 1.txt # 4为特殊权限
SGID(set GID)
希望一个目录被多个用户(同属于一个组)共享,同一个组的用户可以处理
1.针对用户组权限位修改,用户创建的目录或文件所属组和该目录的所属组一致。(比如给一个文件路径设置了特殊权限为 ,假设这个路径数组为hr,那么user1在此目录下创建的文件数组将不是user1组,而是hr组)
2.所有用户都可以读写这个路径,相当于共享路径
chmod g+s /tmp/file # 属组有执行权小写s,没有执行权为大写S
或者
chmod 2755 /tmp/file # 2代表特殊权限位
Sbit(set GID)
粘滞位,在目录创建了此权限,除了root用户,其他用户只能对自己的文件进行删除、移动操作。仅有自己和 root 才有权力删除。
chmod o+t /opt #其他用户有执行权小写t,没有执行权,大写T
或者
chmod 1755 /tmp # 数字1 表示特殊权限位
chattr (文件属性)
凌驾于r、w、x、suid、sgid之上的权限
1.查看是否有特殊权限属性
lsattr /etc/passwd
---------------- /etc/passwd
2 . 设置特殊权限属性
chattr +i /opt/file #锁定文件,不能编辑,不能修改,不能删除,不能移动,可以执行
chattr +a /opt/file #锁定文件,不能编辑,可以追加,不能删除,不能移动,可以执行
还有其他的
+A
不允许更新时间、
+d
不能使用dump备份、
+j
文件首先保存到日志中,然后在写入文件、
等等,这里就不在罗列
chattr属性中可以使用的不同选项:
-R 递归修改文件夹和子文件夹属性
-V chattr命令会输出带有版本信息的冗余信息
-f 忽略大部分错误信息
-a #仅可以追加文件,不能编辑,不能删除,不能移动,可以执行
umask (进程掩码)
当我们登录系统之后,创建一个文件总是有一个默认权限
比如: 目录默认权限:755 文件默认权限:644 那么这个
统默认umask为022,那么当我们创建一个目录时,正常情况下目录的权限应该是777,但是umask表示要减去的值,所以新目录文件的权限应该是777-022=755。至于文件的权限也依次类推:666-022=644
umask 000 # 设置初始为0000
以上设置表示
777-000=755 那么所有创建的文件默认为 777权限 ,就是读写执行都可以
666-000=666 那么所有创建的目录默认为666权限,就是可读,可写。