【发布时间】:2018-11-28 22:43:40
【问题描述】:
可以更改当前进程的 UID/GID,因为它使用setresgid/setresuid 以编程方式运行,这会影响未来的文件访问权限。
但是,已经打开或内存映射的文件会发生什么?它们是否仍可用于读/写等 i/o 操作?我在库执行的“非显式” i/o 操作的上下文中询问更多,例如 sqlite 数据库或其他在内部对文件进行更多操作的库。以DIRECT_IO 模式打开的文件在这方面听起来更加不确定。
【问题讨论】:
-
没什么。您希望 I/O 操作发生错误吗?那将是灾难性的。你说的更加不确定是什么意思?你有什么疑惑?
-
尝试时会发生什么?这似乎很容易测试。
-
在删除权限之前打开句柄不会很有用,如果你不能在删除后使用它们。
-
...也就是说,非常有意保留对文件句柄的访问权;如果这是不可能的,那么一些限制守护进程特权的机制(同时仍然允许他们访问他们需要工作的内容)将会被破坏。
-
对于本地文件系统上的普通文件,成功打开后权限无关紧要。但是 procfs 文件和一些 NFS 服务器的规则是不同的。
标签: c linux file permissions file-permissions