Linux

从零开始学习Linux(二十五):文件特殊权限之SetUID

2020-12-16  本文已影响0人  通靈鹿小六

文件的特殊权限主要分为SetUID、SetGID、Sticky BIT三种。
本章节主要是学习SetUID。

1、SetUID的功能

以用户修改密码举例说明:

在前面章节 从零开始学习Linux(二十):用户配置文件 中,我们学习了用户使用passwd命令修改密码,会修改 /etc/shadow 文件。/etc/shadow 文件的权限是000,如下图所示:

shadow文件权限

继续查看ACL权限,也没有ACL权限,如下图所示:

shadow文件ACL权限

按照之前我们学习到的知识,没有写权限,普通用户是不能够写入文件的。但是Linux系统中非root用户是可以修改密码的,即能够编辑 /etc/shadow 文件。这个就是通过本节SetUID权限实现的。

查看passwd文件的位置,并查看passwd文件的详细信息。如下图所示:

从图中我们可以看到2个比较怪异的地方:
(1)passwd命令背景是红色标记(Linux红色表示危险或错误);
(2)passwd所属者权限是rws(以前都是rwx);

权限s是以前没有看到的,s表示是SetGID权限。

使用cat命令查看shadow文件,整个执行过程如下图所示:

使用cat命令查看/etc/shadow文件和使用passwd命令修改/etc/shadow文件,整个过程对比如下图所示:

到这我们已经说清楚了SetUID权限的功能(类似于Windows系统中的以管理员身份运行,不尽相同)。

2、设定SetUID的方法

2.1、方法一

命令格式:chmod -R 4755 文件名(-R 也可以不加);

说明:4表示SetUID权限,权限可以理解为有4位,之前我们一直设置为三位,是因为首位我们几乎不会用到。首位4表示SetUID权限,首位2表示SetGID权限,首位1表示Sticky BIT权限。

执行命令:

chmod -R 4755 neimenggu

执行过程如下图所示:

可以看到以前的权限是 -rwxr-xr-x+,执行命令后权限是 -rwsr-xr-x+ 。

2.2、方法二

命令格式:chmod -R u+s 文件名(-R 也可以不加);

3、取消SetUID的方法

3.1、方法一

命令格式:chmod -R 755 文件名(-R 也可以不加);

去除首位权限,只保留三位权限位。

3.2、方法二

命令格式:chmod -R u-s 文件名(-R 也可以不加);

执行命令:

chmod -R u-s neimenggu

可以看到,执行命令后,权限从 -rwsr-xr-x+ 又变回 -rwxr-xr-x+。

再次为neimenggu文件赋予rw-r--r--(4644)权限,然后再次查看文件详细信息:

从图中可以看到权限为既不是rwx也不是rws,是rwS。我们说过Linux是严格区分大小写的,所以这显示S不是显示错误。

S表示错误的SetUID权限,要想设置SetUID权限的前提是文件具有执行权限。我们对文件设置rw-r--r--权限,没有执行权限,所以会报错!!!

4、危险的SetUID

SetUID权限非常危险,没有特殊需求不要设置SetUID权限。

对系统中默认具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限。

上一篇下一篇

猜你喜欢

热点阅读