【发布时间】:2015-08-01 05:53:00
【问题描述】:
用例是一个挂载工具,我想将挂载(unionfs(r+x dir, squashfs))限制为调用者拥有的文件。
我知道 fusefs,但我想在内核中使用 overlayfs 和 squashfs。
【问题讨论】:
-
不要把你的问题放在标题里。
标签: linux permissions setuid
用例是一个挂载工具,我想将挂载(unionfs(r+x dir, squashfs))限制为调用者拥有的文件。
我知道 fusefs,但我想在内核中使用 overlayfs 和 squashfs。
【问题讨论】:
标签: linux permissions setuid
只要您还没有调用setuid() 或setreuid(),您就可以使用getuid() 来获取执行您的程序的用户的用户ID。完成后,您可以使用 stat() 获取文件的所有者。
或者,您可以使用access() 系统调用来检查用户是否可以读取、写入和/或执行指定路径。 access() 使用的是真实用户 ID,而不是有效用户 ID,因此不会使用 root 的权限来执行此访问检查。
在任何一种情况下,请注意不要在此检查中引入检查时间/使用时间 (TOCTOU) 漏洞。请记住,路径指向的对象可能随时更改,即使在您的应用程序正在运行时也是如此。符号链接在这里特别危险!
【讨论】: