共计 829 个字符,预计需要花费 3 分钟才能阅读完成。
导读 | 我们都知道 linux 里面一切都是文件。文件拥有普通权限 rwx, 特殊权限 suid,sgid,sbit 等。 本文分享一下 suid 几个 的小实验,通过实验我们可以更加深入的理解 suid 权限,希望对于我们理解有帮助。 |
首先,咱们都知道 linux 用户(不论是超级用户还是普通用户)都可以更改自己的密码。密码这个文件是在 /etc/shadow 文件里面。我们查看这个文件的权限就可以发现:这个文件权限全为空,见下图:
换一种说法:普通用户对 /etc/shadow 文件没有任何权限的。那我们就有有疑问了,普通用户都可以更改自己的密码,但是现在看来又没有任何权限。那我们就要想到文件的特殊权限 SUID 了。
普通用户更改密码是使用 passwd 命令完成的,我们可以通过 whereis passwd 查看 passwd 的绝对路径。见下图:
仔细看就会发现 /usr/bin/passwd 权限是:-rwsr-xr-x. root root。其中 s 代表的意思就是 suid 权限。suid 可以让执行者临时拥有属主的权限。这样我们就不难理解了,普通用户使用 psaawd 命令更改密码,由于 passwd 拥有 suid 权限,所以 linux 系统临时把 passwd 命令的所有者 (root) 身份赋给了普通用户,从而普通用户就拥有了 root 身份,所以就可以使用 passwd 来修改密码(/etc/shadow文件)。
那么普通用户可不可以读取 /etc/shadow 文件呢?我们看到 cat 文件没有 suid 权限。见下图:
那么如果我们给 cat 命令加上 suid 权限,是不是就可以看 /etc/shadow 文件了呢?
果然,我们看到了加上 suid 权限的 cat 成功看到了 /etc/shadow 文件。
现在,我相信我们对于 suid 权限有了进一步的认识。但是出于安全考虑,我们还是不要让普通用户拥有这么大的权利。以免发生不可预知的危险。