系统相关
首页 > 系统相关> > linux-文件所有者:组在setuid()之后不会在位置/ proc //更改吗?

linux-文件所有者:组在setuid()之后不会在位置/ proc //更改吗?

作者:互联网

我需要以root用户身份生成进程,然后将其特权授予非root用户,因此要实现此目的,我将setbit用于二进制文件并将所有者更改为root.然后我以非root用户身份生成该进程,并最初以root用户身份启动,在完成必要的任务后,我使用setuid(getuid())调用将其特权授予非root用户.发生的是/ proc /(pid)/位置上所有文件的owner:group仍然是root:root.由于这些线程是由我的进程(在删除特权之后)产生的.确实在/ proc /(pid)/ exe中拒绝了访问.有谁知道为什么setuid不在文件位置/ proc /(pid)中设置owner:group?

解决方法:

Linux下,如果进程在启动时被设置为set-id,或者用户有权执行二进制文件但不读取二进制文件,并且还可能在某些其他条件下,则在内核内部清除“ dumpable”标志.出于安全原因,此标志阻止了几件事:禁止核心转储(核心转储可能泄漏特权信息),防止普通用户附加调试器,并限制对/ proc /< pid>中的大多数文件的访问.对于那个过程.

清除后,即使进程放弃特权,也无法再次设置该标志.

(实际上,有一个系统调用prctl(PR_SET_DUMPABLE)可以更改标志的值,但我相信该系统调用并不适合一般用途.)

更重要的是,我想知道您在程序中的工作取决于/ proc /< pid> / exe或/ proc /< pid>中的其他文件.可读/可打开.

标签:setuid,linux-kernel,linux,process
来源: https://codeday.me/bug/20191202/2085299.html