标签:setuid linux-kernel linux process
我需要以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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。