![Linux: ps -o fuid,fuser,fgid,fgroup # 这些进程文件系统访问 ID 的用途是什么?](https://linux22.com/image/184936/Linux%3A%20ps%20-o%20fuid%2Cfuser%2Cfgid%2Cfgroup%20%23%20%E8%BF%99%E4%BA%9B%E8%BF%9B%E7%A8%8B%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E8%AE%BF%E9%97%AE%20ID%20%E7%9A%84%E7%94%A8%E9%80%94%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
从ps
命令的手册页来看,这四个“文件系统访问”输出字段(使用-o
选项指定)的用途是什么,即进程使用它们做什么?
fuid / fuser
fgid / fgroup
用法示例: $ ps -o fuid,fuser,fgid,fgroup
.
我知道 fuid/fgid 返回一个 ID 号,fuser/fgroup 返回一个名称或 ID 号;另外 fuid/fuser 与用户值有关,而 fgid/fgroup 与组值有关。
但是这些过程值如何与“文件系统”相关,或者这意味着什么?
我正在运行 Debian,Buster。谢谢。
消歧义:不要将此fuser
字段选择器与命令混淆fuser
,命令显示哪些进程正在使用文件。
答案1
这些是历史文物,现在不应该使用 - 或者更确切地说,它们不应该设置为与有效 uid 和 gid 不同的值。每当后者更改时,文件系统 ID 都会更改以匹配,但文件系统 ID 可以使用以下命令设置为不同的值setfsuid
和setfsgid
。
它们的作用与有效 uid 和 gid 相同,但仅用于文件系统访问权限检查。每当内核检查文件系统访问权限时,它不会使用有效的 uid 或 gid,而是使用文件系统 uid 和 gid。 NFS 服务器存在这些问题:后者需要更改用于访问文件系统的 uid 和 gid,但这会因信号处理而产生安全漏洞,并且引入文件系统 uid 和 gid 作为解决方法。
上面链接的文档提供了详细信息;也可以看看联机credentials
帮助页。