可以使用setresgid
/setresuid
来动态更改当前进程的UID/GID,这将影响后续文件访问权限。
但是已经打开或映射到内存的文件会发生什么呢?它们是否仍然可用于进行I/O操作,比如读/写?我更关心的是在库执行“非显式”I/O操作时会发生什么,例如SQLite数据库或其他更内部操作文件的库。以DIRECT_IO
模式打开的文件在这方面甚至更加不确定。
可以使用setresgid
/setresuid
来动态更改当前进程的UID/GID,这将影响后续文件访问权限。
但是已经打开或映射到内存的文件会发生什么呢?它们是否仍然可用于进行I/O操作,比如读/写?我更关心的是在库执行“非显式”I/O操作时会发生什么,例如SQLite数据库或其他更内部操作文件的库。以DIRECT_IO
模式打开的文件在这方面甚至更加不确定。
/proc
文件就是两个例子。对于这些文件,可能会在读/写时执行额外的检查。