UNIX环境编程笔记——保存的设置用户ID

可执行文件的设置用户ID位

我们知道,如果设置了可执行文件的设置用户ID位,那么在执行此文件的时候,进程的有效用户ID将会设置成该文件的所有者用户ID,这使得我们可以以该文件的所有者的用户权限对该文件进行操作。比较典型的一个例子就是 passwd 命令。passwd命令允许我们更改当前登陆用户的密码而不需要具有root用户权限。由于该命令需要写/etc/passwd文件,但我们通过ll命令查看该文件的相关权限可以看到:

wang@wang-Lenovo-Rescuer-15ISK:~$ ll /etc/passwd
-rw-r--r-- 1 root root 2496 11月 29 10:55 /etc/passwd

只有root用户才具备写passwd文件的权限。可见passwd命令是设置了设置用户ID位的。
通过再次对/usr/bin/passwd 文件使用ll命令我们可以证实这一结论:

wang@wang-Lenovo-Rescuer-15ISK:~$ ll /usr/bin/passwd 
-rwsr-xr-x 1 root root 59640 1月  25  2018 /usr/bin/passwd*

如果需要对可执行文件的这一特殊位进行设置,可以使用chmod *+s [filename]

保存的设置用户ID

与可执行文件的设置用户ID位相关的是与之对应的进程的保存的设置用户ID位。
回顾一下,如果设置了可执行文件的设置用户ID位,那么当操作系统将该文件加载进内存进行运行的时候,这一进程的有效用户ID便设置成该文件的所有者用户ID。
现在,让我们看一下与一个进程相关联的ID都有哪些:

ID名含义
实际用户ID,实际组ID我们实际上是谁
有效用户ID,有效组ID, 附属组ID用于文件访问权限检查
保存的设置用户ID, 保存的设置组ID由exec函数保存

(摘自UNIX环境高级编程第三版)
我们还要注意到,保存的设置用户/组ID是由exec函数复制有效用户ID位而得到的。

对于没有设置设置用户/组ID位的文件

对应的进程的有效用户ID一般就是其实际用户ID,所以保存的设置用户ID也就是实际用户ID,进而可以看到这三者是相等的。

对于设置了设置用户/组ID位的文件

对应的进程的有效用户ID等于文件所有者用户ID,所以保存的设置用户ID便是文件的所有者用户ID,此时进程的有效用户ID和保存的设置用户ID相等,与进程的实际用户ID不等。

当进程保存了设置用户ID后,就可以在其生命周期中的合适的场景下,进行有效用户和保存的设置用户权限之间的切换,这有助于保证进程不会因在全部时间内都保持额外的权限而造成的可能的安全问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值