用例是一个安装工具,我想限制挂载(unionfs(r+x dir, squashfs)
)到调用者拥有的文件。
我知道fusefs,但我想在内核中使用overlayfs和squashfs。
答案 0 :(得分:1)
只要您尚未调用setuid()
或setreuid()
,您就可以使用getuid()
来获取执行程序的用户的用户ID。完成后,您可以使用stat()
获取文件的所有者。
或者,您可以使用access()
系统调用来检查用户是否可以读取,写入和/或执行指定的路径。 access()
使用真实用户ID,而不是有效用户ID,因此它不会使用root权限来执行此访问检查。
在任何一种情况下,请注意不要在此检查中引入检查时间/使用时间(TOCTOU)漏洞。请记住,路径指向的对象可能随时更改,即使应用程序正在运行。符号链接在这里特别危险!