linux特殊权限SUID、SGID、SBIT

简介:

linux特殊权限SUID、SGID、SBIT



一、Set UID


当s这个标志出现在文件所有者的x权限上时,如/usr/bin/passwd这个文件的权限状态:“-rwsr-xr-x.”,此时就被称为Set UID,简称为SUID。那么这个特殊权限的特殊性的作用是什么呢?

1、SUID权限仅对二进制程序(binary program)有效;

2、执行者对于该程序需要具有x的可执行权限;

3、本权限仅在执行该程序的过程中有效(run-time);

4、执行者将具有该程序拥有者(owner)的权限。

SUID的目的就是:让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源。passwd就是一个很鲜明的例子,下面我们就来了解一下这相passwd执行的过程。

我们知道,系统中的用户密码是保存在/etc/shadow中的,而这个文件的权限是----------. (这个权限和以前版本的RHEL也有差别,以前的是-r--------)。其实有没有r权限不重要,因为我们的root用户是拥有最高的权限,什么都能干了。关键是要把密码写入到/etc/shadow中。我们知道,除了root用户能修改密码外,普通用户自己同样也能修改密码,为什么没有写入权限,还能修改密码,就是因为这个SUID功能。

下面就是passwd这个命令的执行过程

1、因为/usr/bin/passwd的权限对任何的用户都是可以执行的,所以系统中每个用户都可以执行此命令。

2、而/usr/bin/passwd这个文件的权限是属于root的。

3、当某个用户执行/usr/bin/passwd命令的时候,就拥有了root的权限了。

4、于是某个用户就可以借助root用户的权力,来修改了/etc/shadow文件了。

5、最后,把密码修改成功。

注:这个SUID只能运行在二进制的程序上(系统中的一些命令),不能用在脚本上(script),因为脚本还是把很多的程序集合到一起来执行,而不是脚本自身在执行。同样,这个SUID也不能放到目录上,放上也是无效的


二、Set GID


我们前面讲过,当s这个标志出现在文件所有者的x权限上时,则就被称为Set UID。那么把这个s放到文件的所属用户组x位置上的话,就是SGID。如开头的/usr/bin/wall命令。

那么SGID的功能是什么呢?和SUID一样,只是SGID是获得该程序所属用户组的权限。

SGID有几点需要我们注意:

1、SGID对二进制程序有用;

2、程序执行者对于该程序来说,需具备x的权限;

3、SGID主要用在目录上;

理解了SUID,我想SGID也很容易理解。如果用户在此目录下具有w权限的话,若使用者在此目录下建立新文件,则新文件的群组与此目录的群组相同。


三、Sticky Bit


这个就是针对others来设置的了,和上面两个一样,只是功能不同而已。

SBIT(Sticky Bit)目前只针对目录有效对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。

最具有代表的就是/tmp目录,任何人都可以在/tmp内增加、修改文件(因为权限全是rwx),但仅有该文件/目录建立者与 root能够删除自己的目录或文件。

注:这个SBIT对文件不起作用。

SUID/SGID/SBIT权限设置

和我们前面说的rwx差不多,也有两种方式,一种是以字符,一种是以数字。

4 为 SUID = u+s

2 为 SGID = g+s

1 为 SBIT = o+t

下面我们就来看看如何设置,并看看达到的效果。


先看SUID的作用及设置

[root@shiyanji ~]# ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 25980 2月  22 2012 /usr/bin/passwd

[root@shiyanji ~]# chmod u-s /usr/bin/passwd

[root@shiyanji ~]# ll /usr/bin/passwd

-rwxr-xr-x. 1 root root 25980 2月  22 2012 /usr/bin/passwd

上面操作的目的是将文件/usr/bin/passwd中的s去掉,把其恢复成普通文件权限,下面我们让普通用户修改自己的密码,看看是否还能成功。

[wtf@shiyanji ~]$ passwd

更改用户 wtf 的密码 。

为 wtf 更改 STRESS 密码。

(当前)UNIX 密码:

新的 密码:

重新输入新的 密码:

passwd: 鉴定令牌操作错误

wKioL1ka7zDhYvbVAAAcPrt8HI4222.png

此时,你会发现普通用户无法更改自己的密码,现在我们再把/usr/bin/passwd文件状态有x变回s,再看看能否让普通用户更改自己的密码。

[root@shiyanji ~]# chmod u+s /usr/bin/passwd

[root@shiyanji ~]# ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 25980 2月  22 2012 /usr/bin/passwd

wKiom1ka8BWQp35DAAAmHhFER_Q639.png

我想这一下,你对SUID的作用已经了解了吧。


再看SGID的作用及设置

[root@shiyanji tmp]# mkdir test

[root@shiyanji tmp]# chmod 757 test

[root@shiyanji tmp]# ll

drwxr-xrwx 2 root root 4096 5月  16 19:02 test

这时候,任何用户对此目录都有写入权限,那么我们就在这个目录里面创建文件与目录,并看看他们的权限如何:

[wtf@shiyanji ~]$ cd /tmp/test

[wtf@shiyanji test]$ mkdir dir1

[wtf@shiyanji test]$ touch file1

[wtf@shiyanji test]$ ll

总用量 4

drwxrwxr-x 2 wtf wtf 4096 5月  16 20:54 dir1

-rw-rw-r-- 1 wtf wtf    0 5月  16 20:55 file1

现在我们使用sgid,结果如下:

[root@shiyanji test]# chmod g+s .

[root@shiyanji test]# ll -d

drwxr-srwx 3 root root 4096 5月  16 20:55 .

[wtf@shiyanji test]$ mkdir dir2

[wtf@shiyanji test]$ ll

总用量 8

drwxrwxr-x 2 wtf wtf  4096 5月  16 20:54 dir1

drwxrwsr-x 2 wtf root 4096 5月  16 20:59 dir2

-rw-rw-r-- 1 wtf wtf     0 5月  16 20:55 file1

[wtf@shiyanji test]$ touch file2

[wtf@shiyanji test]$ ll

总用量 8

drwxrwxr-x 2 wtf wtf  4096 5月  16 20:54 dir1

drwxrwsr-x 2 wtf root 4096 5月  16 20:59 dir2

-rw-rw-r-- 1 wtf wtf     0 5月  16 20:55 file1

-rw-rw-r-- 1 wtf root    0 5月  16 20:59 file2

这时候我们就发现,file2和dir2的用户组变成了root了,也就是他们上层目录test这个目录的所属用户组。

这个应用,应用在一个项目的共同开发上,是很方便的。

[root@shiyanji test]# chmod g-s .

[root@shiyanji test]# ll -d

drwxr-xrwx 4 root root 4096 5月  16 20:59 .

这样就还原了!


最后我们来看SBIT的作用及设置

[root@shiyanji test]# ls

dir1  dir2  file1  file2

[root@shiyanji test]# rm -rf dir*

[root@shiyanji test]# rm -rf file*

[root@shiyanji test]# ll

总用量 0

清空/tmp/test目录里面的全部内容。

我们切换成普通用户,然后再里面创建文件,至少需要两个普通用户来测试这个,如果没有的话,就自己建立。

[wtf@shiyanji test]$ touch file1

[wtf@shiyanji test]$ ll

总用量 0

-rw-rw-r-- 1 wtf wtf 0 5月  16 21:05 file1

-rw-rw-r-- 1 www www 0 5月  16 21:05 file2

这时候我们建立了一个文件,我们换成另外一个用户

[www@shiyanji test]$ touch file2

[www@shiyanji test]$ ll

总用量 0

-rw-rw-r-- 1 wtf wtf 0 5月  16 21:05 file1

-rw-rw-r-- 1 www www 0 5月  16 21:05 file2

我们看到,虽然其他用户对file文件只有只读权限,但由于file*所在的目录,对其他人是全部的权限,所以,我们换其他用户还是可以删除这个文件的,看操作

[www@shiyanji test]$ rm -rf file1

[www@shiyanji test]$ ll

总用量 0

-rw-rw-r-- 1 www www 0 5月  16 21:05 file2

[wtf@shiyanji test]$ rm -rf file2

[wtf@shiyanji test]$ ll

总用量 0

发现我们已经删除了这个不属于我们的权限。

下面我们就给这个test目录加上SBIT权限:

[root@shiyanji test]# chmod o+t .

[root@shiyanji test]# ll -d

drwxr-xrwt 2 root root 4096 5月  16 21:11 .

用两个普通用户各创建一个文件一个目录,来看看效果:

[www@shiyanji test]$ ll

总用量 8

drwxrwxr-x 2 wtf wtf 4096 5月  16 21:14 dir1

drwxrwxr-x 2 www www 4096 5月  16 21:15 dir2

-rw-rw-r-- 1 wtf wtf    0 5月  16 21:14 file1

-rw-rw-r-- 1 www www    0 5月  16 21:15 file2

这个文件的权限还是和第一次创建的时候是一样的,我们再换成其他的用户,看看能不能再次删除这个文件

[www@shiyanji test]$ rm -rf dir1

rm: 无法删除"dir1": 不允许的操作

[www@shiyanji test]$ rm -rf file1

rm: 无法删除"file1": 不允许的操作


[wtf@shiyanji test]$ rm -rf dir2

rm: 无法删除"dir2": 不允许的操作

[wtf@shiyanji test]$ rm -rf file2

rm: 无法删除"file2": 不允许的操作

看到提示,说权限不够了,只能由这个文件的创建者或root用户才能删除。这个我们就不演示了。

如果要还原权限的话,

[root@shiyanji test]# chmod o-t .

[root@shiyanji test]# ll -d

drwxr-xrwx 4 root root 4096 5月  16 21:15 .

两个需要注意的问题

OK,关于SUID/SGID/SBIT这些特殊权限的应用和作用我们已经讲完了。但如果你仔细一点的话,会发现,我并没有用数字方式来更改这个特殊的权限,为什么呢?且看下面的分析。

问题1:用数字改变目录的特殊权限,不起作用。

我们把/tmp/下面,我们自己建立的实验文件删除

[root@shiyanji tmp]# rm -rf test

然后再重新创建一个文件和目录,

[root@shiyanji tmp]# cp /usr/bin/passwd ./

[root@shiyanji tmp]# mkdir testdir

[root@shiyanji tmp]# ll passwd ; ll -d testdir

-rwxr-xr-x 1 root root 25980 5月  16 21:22 passwd

drwxr-xr-x 2 root root 4096 5月  16 21:21 testdir

下面我们就来用数字方式来更改这三个特殊的权限,看看会有什么样的结果

[root@shiyanji tmp]# chmod 4755 passwd

[root@shiyanji tmp]# chmod 3755 testdir

[root@shiyanji tmp]# ll passwd ; ll -d testdir

-rwsr-xr-x 1 root root 25980 5月  16 21:22 passwd

drwxr-sr-t 2 root root 4096 5月  16 21:21 testdir

发现用这种方式增加这三个特殊权限没有问题,那么我们再把权限改回去看看

[root@shiyanji tmp]# chmod 0755 passwd

[root@shiyanji tmp]# chmod 0755 testdir

[root@shiyanji tmp]# ll passwd ; ll -d testdir

-rwxr-xr-x 1 root root 25980 5月  16 21:22 passwd

drwxr-sr-x 2 root root 4096 5月  16 21:21 testdir

我们发现,对文件,权限是改回去了,而对于目录,只改回去了SBIT的权限,对SGID改不回去。这是RHEL6上的实验结果,可能是出于安全性的考虑吗?这个我就不清楚了,也找不到相关的资料。如果各位网友,有知道什么原因的,欢迎与我联系。在此先谢过了。

所以说,建议大家还是用最明了的方式,直接用+-来更改,无论方法如何,最终能得到结果就OK了。哈哈……

问题2:为什么会有大写的S和T。

还是用上面的文件和目录

[root@shiyanji tmp]# ll passwd ; ll -d testdir

-rwxr-xr-x 1 root root 25980 5月  16 21:22 passwd

drwxr-sr-x 2 root root 4096 5月  16 21:21 testdir

我们把passwd和testdir的x权限去掉

[root@shiyanji tmp]# chmod u-x passwd

[root@shiyanji tmp]# chmod o-x testdir

[root@shiyanji tmp]# ll passwd ; ll -d testdir

-rw-r-xr-x 1 root root 25980 5月  16 21:22 passwd

drwxr-sr-- 2 root root 4096 5月  16 21:21 testdir

 

再给他们加上SUID和SBIT权限

[root@shiyanji tmp]# chmod u+s passwd

[root@shiyanji tmp]# chmod o+t testdir

[root@shiyanji tmp]# ll passwd ; ll -d testdir

-rwSr-xr-x 1 root root 25980 5月  16 21:22 passwd

drwxr-sr-T 2 root root 4096 5月  16 21:21 testdir

我们看到,这时候的小s和小t已经变成了大S和大T了,为什么呢?因为他们这个位置没有了x权限,如果没有了x权限,根据我们上面讲的内容,其实,这个特殊的权限就相当于一个空的权限,没有意义。也就是说,如果你看到特殊权限位置上变成了大写的了,那么,就说明,这里有问题,需要排除。



     本文转自品鉴初心51CTO博客,原文链接:http://blog.51cto.com/wutengfei/1926420,如需转载请自行联系原作者








相关文章
|
20天前
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
36 1
linux特殊权限!!
|
1月前
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky
|
1月前
|
Linux 数据安全/隐私保护 Windows
Linux_权限理解(详细PLUS
Linux_权限理解(详细PLUS
|
1月前
|
网络协议 Linux 网络安全
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
|
6月前
|
Linux Windows
Linux权限命令详解(二)
Linux权限命令详解(二)
|
6月前
|
安全 Linux 开发工具
Linux权限命令详解(一)
Linux权限命令详解(一)
|
6月前
|
Linux 数据安全/隐私保护
Linux 权限常用命令
【2月更文挑战第8天】
106 2
Linux 权限常用命令
|
安全 Shell Linux
【Linux】Linux权限,shell命令以及运行原理(下)
之前我们一直敲得命令和口口声声说的shell到底是什么呢?命令行提示符和输入的指令并且可以执行都是通过命令行解释器来实现的,那么命令行解释器就是我们常说的shell,具体我们看下面!
110 0
|
安全 Shell Linux
【Linux】Linux权限,shell命令以及运行原理(上)
之前我们一直敲得命令和口口声声说的shell到底是什么呢?命令行提示符和输入的指令并且可以执行都是通过命令行解释器来实现的,那么命令行解释器就是我们常说的shell,具体我们看下面!
131 0
|
Linux
linux第四课:改变文件的权限和属性(内含:1.修改权限命令chmod+2.临时切换用户用 sudo+3.chowm:改变文件所有者)
linux第四课:改变文件的权限和属性(内含:1.修改权限命令chmod+2.临时切换用户用 sudo+3.chowm:改变文件所有者)
345 0
linux第四课:改变文件的权限和属性(内含:1.修改权限命令chmod+2.临时切换用户用 sudo+3.chowm:改变文件所有者)
下一篇
无影云桌面