gpt4 book ai didi

linux - 在 setuid root 程序中,如何检查当前用户(那个 root 正在为之工作)是否拥有一个文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:42 24 4
gpt4 key购买 nike

用例是一个挂载工具,我想限制挂载(a unionfs(r+x dir, squashfs) )到调用者拥有的文件。

我知道 fusefs,但我想在内核中使用 overlayfs 和 squashfs。

最佳答案

只要您还没有调用setuid()setreuid(),您就可以使用getuid() 来获取执行程序的用户的用户 ID。完成后,您可以使用 stat() 获取文件的所有者。

或者,您可以使用 access() 系统调用来检查用户是否可以读取、写入和/或执行指定路径。 access() 使用真实用户 ID,而不是有效用户 ID,因此它不会使用 root 权限来执行此访问检查。

无论哪种情况,请注意不要在此检查中引入检查时间/使用时间 (TOCTOU) 漏洞。请记住,路径指向的对象可能随时更改,即使您的应用程序正在运行时也是如此。符号链接(symbolic link)在这里特别危险!

关于linux - 在 setuid root 程序中,如何检查当前用户(那个 root 正在为之工作)是否拥有一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31758751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com