用户权限 -Linux 系统特殊权限
Linux 系统特殊权限
set_uid
set_gid
sticky 粘滞位
权限属性 chattr
进程掩码 umask
特殊权限练习题
一、Linux 系统特殊权限
1、suid 以文件的所属用户身份执行命令, 而不是以当前用户的身份执行命令
-rwsr-xr-x. 1 root root 54080 Nov 5 2016 /usr/bin/cat
suidroot 用户执行,最终运行的身份是 root
bgx 用户执行,最终运行的身份是 root
2、目录设置为 sgid 后续如果在该目录下创建文件, 都将与该目录的所属组保持一致
drwxr-srwx. 2 root devops 29 Jun 14 21:01 /opt/
bgx 用户登陆后, 在/opt/目录创建文件或者目录属主和属组是
最终属主和属组 bgx devops
xlw 用户登陆后, 在/opt/目录创建文件或者目录属主和属组是 2. 最终属主和属组 xlw devops
root 用户登陆后, 在/opt/目录创建文件或者目录属主和属组是 3. 最终属主和属组 root devops
3、sticky 任何人都可以在该目录下创建文件以及目录, 但只能删除自己创建的文件和目录
drwxrwxrwt. 7 root root 93 Jun 14 21:47 /tmp/
4、如何设置特殊权限
用符号表示: setuid=u+s; setgid=g+s; sticky=o+t
用数值表示: setuid=4; setgid=2; sticky=1
1.set_uid
文件的执行有效身份为文件的拥有者,而不是执行者的身份
演示:
检查 passwd 文件权限,匿名用户没有权限查看
使用普通用户无法查看
给 cat 命令赋予 suid
suid 授权方法
suid 4000 权限字符 s(S),用户位置上的 x 位上设置
授权方法:chmod 4755 passwd
chmod u+s passwd
suid 的作用
让普通用户拥有二进制文件的所属主权限,二进制文件需要有执行权限。
如果设置的二进制文件没有执行权限,那么 suid 的权限显示就是大 S。
特殊权限 suid 仅对二进制可执行程序有效,其他文件或目录则无效。
如果普通用户需要操作没有权限的文件,为对应的命令赋予 Suid 权限。
注意: suid 双刃剑, 是一个比较危险的功能, 对系统安全有一定的威胁。
2.set_gid
演示
sgid 授权方法
suid 2000 权限字符 s(S),取决于属组位置上的 x
授权方法:chmod 2755 directory
chmod g+s directory
sgid 作用
针对用户组权限位修改,用户创建的目录或文件所属组和该目录的所属组一致。
当某个目录设置了 sgid 后,在该目录中新建的文件不在是创建该文件的默认所属组
使用 sgid 可以使得多个用户之间共享一个目录的所有文件变得简单。
3.sticky 粘滞位
sticky 对目录有写权限的用户仅仅可以删除目录里属于自己的文件,不能删除其他用户的文件系统中存在的/tmp 目录是经典的粘滞位目录,谁都有写权限,因此安全成问题,常常是木马第一手跳板。
sticky 授权方法
粘滞位 1000 权限字符 t(T),其他用户位的 x 位上设置。授权方法:chmod 1755 /tmp
chmod o+t /tmp
sticky 作用
让多个用户都具有写权限的目录,并让每个用户只能删自己的文件。
特殊 sticky 目录表现在 others 的 x 位,用小 t 表示,如果没有执行权限是 T
一个目录即使它的权限为”777”如果是设置了粘滞位,除了目录的属主和”root”用户有权限删除,除此之外其他用户都不允许删除该目录。
二、权限属性 chattr
设置文件属性(权限),针对所有用户,包括 root
a:让文件或目录仅可追加内容
i:不得任意更动文件或目录
演示:创建文件并设置属性
设置属性
a 权限, 无法覆盖写入和删除文件
a 权限, 只能追加, 适用于日志文件
i 权限, 无法写入, 无法删除
解除限制
三、进程掩码 umask
umask 用于控制系统权限, 默认系统权限较大, 需要靠 Umask 来变更权限
默认新建文件,系统默认最大权限为 666
默认新建目录,系统默认最大权限是 777
我们在新建文件和目录的默认权限会受到 umask 的影响, umask 表示要减掉的权限。创建目录权限值为777-umask
创建普通文件权限值为644-umask
umask 涉及到的相关文件
/etc/bashrc
/etc/profile
~/.bashrc
~/.bash_profile
注意 umask 影响的范围
shell (vim,touch) –umask–> 新文件或目录权限
vsftpd –umask–> 新文件或目录权限
samba –umask–> 新文件或目录权限
useradd –umask–> 用户 HOME
1.假设 umask 值为:022(所有位为偶数)
//文件的起始权限值 6 6 6 - 0 2 2 = 6 4 4
2.假设 umask 值为:045(其他用户组位为奇数)
//计算出来的权限。由于 umask 的最后一位数字是 5,所以,在其他用户组位再加 1。6 6 6 - 0 4 5 = 6 2 1
3.默认目录权限计算方法
7 7 7 - 0 2 2 = 7 5 5
示例 1: 在 shell 进程中创建文件
查看当前用户的 umask 权限
示例 2: 修改 shell umask 值(临时生效)
示例 3: 修改 shell umask 值(永久生效, 强烈不建议修改)
示例 4: 通过 umask 决定新建用户 HOME 目录的权限
示例 5:例如 vsftpd 进程/etc/vsftpd/vsftpd.conf
四、特殊权限练习题
lab permissions setup
考试必考:
创建三个用户, 分别为 curly、larry、moe 这些用户都是 stooges 组的成员。
这些用户帐号密码都为 password
要求以上用户和组可以在/home/stooges 目录里访问,创建,删除文件
其他用户一律不允许访问该目录
在该目录下新建的文件会自动属于 stooges 组拥有
版权声明: 本文为 InfoQ 作者【Albert Edison】的原创文章。
原文链接:【http://xie.infoq.cn/article/fc667cb3f58902206fd4e1ff4】。文章转载请联系作者。
评论