Linux之特殊权限
特殊权限(基于执行权的)
1、suid 设置用户编号
只针对文件
suid 作用:给一个执行文件设置该权限后,任何能够执行该文件的
用户都以该文件拥有者的身份去运行
设置完毕后所属组位置的x会被替换为s,若s小写则表示所属人的执行权限还在,
若S大写则表示所属人的执行权限不在
例子:/usr/bin/passwd文件的权限是-rwsr-xr-x,普通用户(other)对该文件无w权限,但因为有x权限,且具有suid的特殊权限,所以以该文件拥有者(root)的身份去运行,在运行该文件过程中拥有root账户的权限,从而可以实现修改密码
设置方法
chmod u+s 文件路径
-rwxr-xr-x. 1 root root 2289656 Jun 10 2014 /usr/bin/vim
注:SetUID很危险,如果把vim命令设置了SUID,那么普通用户就可以用vim修改系统所有配置文件,比如把/etc/passwd文件中自己的用户分类修改成0(超级用户)。
2、Sgid 设置组编号
针对文件时:
给一个执行文件设置该权限后,任何能够执行此文件的
用户都以该文件的属组的身份去
运行
设置完毕后所属组位置的x会被替换为s,若s小写则表示所属人的执行权限还在,若S大写则表示所属人的执行权限不在
针对目录时:
权限的继承,给目录设置sgid权限后
任何人在此目录下
创建内容,内容的属组与该目录所属组一致,
设置完毕后所属组位置的x会被替换为s,若s小写则表示所属人的执行权限还在, 若S大写则表示所属人的执行权限不在
设置方法
chmod g+s 路径 /share
设置完毕后所属组位置的x会被替换为s,若s小写则表示所属人的执行权限还在,
若S大写则表示所属人的执行权限不在
例子: 在/tmp 目录下新建一个目录,设置sgid 权限后,新建用户,在/tmp目录中新建目录,查看权限
3、sbit 对权限的收缩
只对目录有效,一旦设定,那么该目录中存放的内容只能被内容的所属人删除,也就是说用户在该目录下只能删除属于自己的文件
设置方法
chmod o+t 目录路径
设置完毕后其他人位置的x会被替换为t,若t小写则表示所属人的执行权限还在,
若T大写则表示所属人的执行权限不在
SUID/SGID/SBIT权限设置
有两种方式,一种是以字符,一种是以数字。
特殊权限 数字表达 权限设置方法
suid 4
sgid 2
sbit 1
下面我们就来看看如何设置,并看看达到的效果。
先看SUID的作用及设置
ls -l /usr/bin/vim
-rwxr-xr-x. 1 root root 2289656 Jun 10 2014 /usr/bin/vim 是一个二进制文件
讲vim 命令赋予 suid 权限
chmod u+s /usr/bin/vim
-rwsr-xr-x. 1 root root 2289656 Jun 10 2014 /usr/bin/vim
我们使用 vim 直接编辑我们的/etc/passwd 这个存放用户信息的文件,看看其他用户能否编辑(在不设置suid 的情况下肯定其他用户是不可以编辑的)
su - hjk
vim /etc/passwd
切换到hjk普通用户上,我们可以直接把hjk用户的uid 改为0
那就表示 我们的hjk 用户借用了我们vim 拥有者的root的身份去执行
这样会给我们的系统造成很大的威胁 , 所以 请善用 suid 权限
接着看 sgid 的效果
这里我就直接演示 目录设置sgid 权限的效果
给/tmp 目录设置sgid 权限后,切换用户,在/tmp目录中新建目录,查看权限
ls -ld /tmp
drwx---rwx. 10 root root 4096 Apr 11 22:37 /tmp
任何用户都可以在/tmp 目录下去创建内容
chmod g+s /tmp
ls -ld /tmp
su - hjk
cd /tmp
mkdir test
我们发现 创建的test 目录的所属组 变为了我们 父目录tmp 目录的所属组root
这就表明,我们在此目录下创建内容,我们的root管理员都可以进行管理
最后 我们 看下 sbit 权限的效果
同样 我们还是以 /tmp 目录作为例子 ,设置 sbit 权限
[[email protected] tmp]# ls -ld /tmp
drwx---rwx. 9 root root 4096 Apr 11 22:51 /tmp
[[email protected] tmp]# chmod o+t /tmp 设置sbit 权限
[[email protected] tmp]# ls -ld /tmp
drwx---rwt. 9 root root 4096 Apr 11 22:51 /tmp
su - hjk 切换到 hjk 普通用户上
mkdir /tmp/test
ls -ld/tmp/test
drwxrwxr-x 2 hjk hjk 4096 Apr 11 22:54 test
su - test 切换到 test 普通用户上
mkdir /tmp/hjk
ls -ld /tmp/hjk
drwxrwxr-x 2 test test 4096 Apr 11 22:57 hjk
看看是否可以删除 hjk 用户的test 目录
rm -rf test
权限拒绝
那么 ,我们就可以得到结论,任何用户在设置sbit 的目录下创建的内容只能自己和root 超级管理员可以管理,其他用户没有权限管理!
ok ,那我们 标准的共享目录的权限 就是 3777 (sgid + sbit )
装载自:https://baijiahao.baidu.com/s?id=1597532383959518765&wfr=spider&for=pc