具有 SUID/SGID 权限的程序
SUID的权限其实与程序的相关性非常的大!
- SUID 权限仅对二进位程序(binary program)有效;
- 运行者对于该程序需要具有 x 的可运行权限;
- 本权限仅在运行该程序的过程中有效 (run-time);
- 运行者将具有该程序拥有者 (owner) 的权限。
所以说,整个 SUID 的权限会生效是由于『具有该权限的程序被触发』,而我们知道一个程序被触发会变成程序。
所以,运行者可以具有程序拥有者的权限就是在该程序变成程序的那个时候!
为啥运行了 passwd 后你就具有 root 的权限呢?不都是一般使用者运行的吗? 这是因为你在触发 passwd 后,会取得一个新的程序与 PID,该 PID 产生时通过 SUID 来给予该 PID 特殊的权限配置!
[zhang@ZhangSir ~]$passwd
Changing password for user zhang.
Changing password for zhang.
(current) UNIX password:
[1]+ Stopped passwd
[zhang@ZhangSir ~]$pstree -u
systemd-+-ModemManager---2*[{ModemManager}]
|-NetworkManager-+-dhclient
......
|-smartd
|-sshd---sshd---bash---su---bash(zhang)-+-passwd(root)
| `-pstree
|-systemd-journal
......
从上表的结果我们可以发现,底线的部分是属于 zhang 这个一般帐号的权限,特殊字体的则是 root 的权限! 但你看到了, passwd 确实是由 bash 衍生出来的!不过就是权限不一样!通过这样的解析, 你也会比较清楚为何不同程序所产生的权限不同了!这是由于『SUID 程序运行过程中产生的程序』的关系了!
那么既然 SUID/SGID 的权限是比较可怕的,您可以使用 find 查询整个系统的 SUID/SGID 的文!
find / -perm +6000
/proc/* 代表的意义
proc 目录内是内存中数据的映射,而通过其中的一些文件则可以查看系统的一些信息呢!
文件名 | 文件内容 |
---|---|
/proc/cmdline | 加载 kernel 时所下达的相关参数!查阅此文件,可了解系统是如何启动的! |
/proc/cpuinfo | 本机的 CPU 的相关信息,包含时脉、类型与运算功能等 |
/proc/devices | 这个文件记录了系统各个主要装置的主要装置代号,与 mknod 有关! |
/proc/filesystems | 目前系统已经加载的文件系统罗! |
/proc/interrupts | 目前系统上面的 IRQ 分配状态。 |
/proc/ioports | 目前系统上面各个装置所配置的 I/O 位址。 |
/proc/kcore | 这个就是内存的大小啦!好大对吧!但是不要读他啦! |
/proc/loadavg | 还记得 top 以及 uptime 吧?没错!上头的三个平均数值就是记录在此! |
/proc/meminfo | 使用 free 列出的内存信息,嘿嘿!在这里也能够查阅到! |
/proc/modules | 目前我们的 Linux 已经加载的模块列表,也可以想成是驱动程序啦! |
/proc/mounts | 系统已经挂载的数据,就是用 mount 这个命令呼叫出来的数据啦! |
/proc/swaps | 到底系统挂加载的内存在哪里?使用掉的 partition 就记录在此啦! |
/proc/partitions | 使用 fdisk -l 会出现目前所有的 partition 吧?在这个文件当中也有纪录! |
/proc/pci | 在 PCI 汇流排上面,每个装置的详细情况!可用 lspci 来查阅! |
/proc/uptime | 就是用 uptime 的时候,会出现的信息啦! |
/proc/version | 核心的版本,就是用 uname -a 显示的内容啦! |
/proc/bus/* | 一些汇流排的装置,还有 U盘 的装置也记录在此! |
其实,上面这些文件在此建议您可以使用 cat 去查阅看看,不必深入了解, 不过,观看过文件内容后,毕竟会比较有感觉啦!如果未来您想要自行撰写某些工具软件, 那么这个目录底下的相关文件可能会对您有点帮助的!
最后修改:2016-11-14 23:46:01
© 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
