特殊权限
如用户执行 passwd 命令时,依托 root 身份运行,变更密码。
ll /etc/passwd #普通用户是无权限修改的
#登陆普通用户,执行passwd
passwd
ps aux | grep passwd
- 特殊权限suid
默认情况普通用户无法查看/etc/shadow,加特殊权限后可以查看
cat /etc/shadow #无权限
chmod u+s /usr/bin/cat #方式一
chmod 4755 /usr/bin/cat #方式二,4表示特殊权限中的suid
cat /etc/shadow #普通用户使用cat的特殊权限,即使用root的身份查看
- 特殊权限sgid
在文件属组权限上显示为s(执行权限)s(没有执行权限)
命令执行过程中以“属组”身份运行该命令。
将目录设置sgid后,在该目录下创建文件,都与该目录的所属组保持一致。
作用:使得多个用户共享一个目录。
cd /tmp/ && mkdir sgid_test
chmod g+s /tmp/sgid_test #chmod 2755
chmod 777 sgid_test/
#切换用户,并在该目录下创建文件查看属性
su - userone
touch /tmp/sgid_test/test.txt
ll /tmp/sgid_test
- 特殊权限sbit
针对目录:目录一旦被赋予了粘滞位,除了root可以删除所有文件,普通用户对该目录就算有w权限,也只能删除自己建立的文件。
MySQL中,初始化时,会在/tmp/目录创建一些临时文件,初始化结束后,会自己清除里面的数据,别人无法清理(如果不是粘滞位,初始化时MySQL就会报错)
ll -d /tmp/ #比如/tmp目录就有粘滞位
chmod o+t /tmp
chmod 1777 /tmp
- chattr
chattr命令只有root才可以使用,用来修改文件系统的权限属性,凌驾于rwx基础权限之上的授权。
#cahttr [+-=] [选项] 文件名或者目录名
#选项:+ 增加权限; - 减少权限; = 等于某个权限; a 让文件或目录仅可追加内容; i 不得更变文件或目录
#新创建一个文件,不允许被删除(root也不行),只能往里面追加数据,如日志
touch /mnt/file_a
chattr +a /mnt/file_a #修改属性
lsattr /mnt/file_a #查看属性
#此时无法删除,若要删除先使用root身份取消属性
chattr -a /mnt/file_a
rm -f /mnt/file_a
#配置一个文件,不可变更
touch /mnt/file_i
chattr -i /mnt/file_i
- 默认权限umask
默认目录权限:755(777-022),默认文件权限:644(666-022)
#默认用户家目录权限为700
cat /etc/login.defs #umask 077,777-077=700
#默认root创建的文件权限和普通用户创建的不一样
umask #
root创建的文件权限为644,666-022=644
umask #普通用户创建的文件权限为664,666-002=664
cat /etc/profile #用户登陆系统是=是,加载的环境变量,初始化用户的工作目录
#----------------------控制umask的代码----------------------
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002 #
else
umask 022 #uid不大于199
fi