我们在学习Linux的过程中,会经常接触到SUID的概念,这些概念涉及系统安全,所以今天简单说下SUID是什么,以及如何使用!

权限概念

首先我们需要知道,SUID是什么?SUID是Set User ID的意思。

那它们又有什么作用呢?在Linux系统中我们通常使用权限来限制一个文件,例如r–是只读,rw-是读写等等。一般这些权限我们用来限制普通文件,还有一种文件叫做程序,这种文件在执行时,会调用其它的文件,如果其它文件所有者并未当前执行程序的用户,那怎么办?

举个例子:cjk用户需要执行程序sdf,而程序sdf需调用所有者为lzll的bdyjy文件,这时就需要设置SUID。添加之后,系统在执行程序时,会以需要调用文件所有者的身份,运行程序。

我们可以通过密码修改这个命令来理解SUID使用效果。

权限效果

如图,密码修改命令是passwd,位于系统的/usr/bin/passwd,我们通过ls -l命令查看下它的权限设置,有一个SUID。我们在修改密码时,它会对/etc/shadow文件进行读写,也就是需要调用/etc/shadow这个文件,我们同样通过ls -l查看下/etc/shadow的权限,不难发现这个文件属于root所有者:

普通用户对此文件没有任何权限,但是可以使用passwd改密码,原理就是当你使用passwd命令时,因为SUID的效果,相当于使用/etc/shadow的所有者,也就是root身份,对/etc/shadow文件进行修改:

1
2
3
4
chmod u+s cjk
#添加
chmod u-s cjk
#删除

评论