我正在运行 bash 脚本来复制一些日志文件,然后在 Red Hat 机器上重新启动服务。每次执行脚本时,我都会在控制台上看到以下内容:
[root@servername ~]# sh /bin/restart
_nss.sh
_dumpable = 1
kernel.suid
Stopping Service: [ OK ]
Starting Service: [ OK ]
[root@servername ~]#
在这种情况下,“kernel.suid_dumpable = 1”是什么意思?
谢谢,IVR 复仇者
一些背景:
setuid 位:
可执行文件上的 setuid 位使得任何用户运行的可执行文件都像由可执行文件的所有者运行一样运行。所以如果setuid设置在root拥有的程序上,不管是谁运行,都会以root权限运行。当然没那么简单,请参阅这篇 wikipedia文章,或获取 Steven 的 Programing in the Unix Environment 的副本。
核心转储:
核心转储是将程序的工作内存转储到文件中。请参阅此维基百科文章。
suid_dumpable:
这控制是否可以如上所述从 setuid 程序中转储内核。见下文。这是一个内核可调参数,您可以使用以下命令对其进行更改:
您可以在源代码的文档中找到有关此可调参数的信息,如果安装了该可调参数,您可能会在如下目录中找到: /usr/src/linux-source-2.6.27/Documentation/sysctl/ 。在这种情况下,下面的引用位于该目录的 fs.txt 中。使用该
uname -a
命令找出您的内核版本。为什么重要:
这可能是一个安全风险:
所以这个想法是,如果有核心转储并且普通用户可以阅读它们,他们可能会发现特权信息。如果程序被很好地转储,它在内存中具有特权信息,并且用户可以读取转储,他们可能会发现该特权信息。
参考:
它确定您是否可以从 setuid 进程获取核心转储。
来自原始补丁的一些信息