SUID

SUID

1. 从passwd说起

普通用户可以使用passwd命令来修改自己的密码,但大家都知道修改密码需要保存到/etc/shadow文件中,但从shadow文件中可以看到只有root用户可写,那么普通用户是如何修改这个文件的呢?

ls -l /etc/shadow
-rw-r----- 1 root shadow 1404 Nov  7  2019 /etc/shadow

我们先看passwd命令的权限,可以看到该文件属于root:root,对于用户、组、其它的可执行权限分别为s, x, xx可以理解,这个s的用处是什么呢?

ls -l `which passwd`
-rwsr-xr-x 1 root root 54256 May 17  2017 /usr/bin/passwd

实际上s是SUID权限,这个文件表示非所有者在执行这个文件时,会临时以所有者的权限执行,也就是passwd在普通用户执行时,可以获取root权限,从而将修改的密码保存到了/etc/passwd权限。当然如果不想普通用户修改自己的密码,可以把passwd的SUID权限拿掉。

同理,也存在SGID权限。

2. 应用

如果平时遇到一个应用程序需要获得管理员权限才能执行,但普通用户并没有加到sudoers,或者加到sudoers但不想每次都敲sudo,这时就可以将该文件加上SUID权限。

首先,如果想使用管理员权限,先要把可执行文件(test)改成root所有:

> ll test
-rwxrwxr-x 1 gr gr 45878368 Sep 23 15:59 test*
> sudo chown root:root tesst
> ll test
-rwxrwxr-x 1 root root 45878368 Sep 23 15:59 test*

对文件添加SUID权限,使用如下命令:

> sudo chmod u+s test
> ll test
-rwsrwxr-x 1 root root 45878368 Sep 23 15:59 test*

如果想添加SGID权限,使用如下命令:

> sudo chmod g+s test
> ll tests
-rwxrwsr-x 1 root root 45878368 Sep 23 15:59 test*
posted @ 2020-09-23 17:01  bairuiworld  阅读(381)  评论(0编辑  收藏  举报