我们在学习 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 | chmod u+s cjk |