fstab 挂载选项如何与 Linux 中每个文件定义的权限一起使用

fstab 挂载选项如何与 Linux 中每个文件定义的权限一起使用

我试图了解fstab在 ext4 作为正在使用的文件系统的情况下,在安装磁盘时设置的权限选项的优先级和组合,以及与磁盘上每个文件关联的权限选项。

进一步来说:

  • exec 和可执行标志
  • suid 和 suid 标志
  • 开发者
  • 默认与什么都不做

例如,rw这是否fstab意味着文件在安装时将具有读写权限?如果他们只读取与该文件关联的内容会发生什么?挂载选项是否会影响存储在磁盘上的挂载文件的权限?或者他们是否以某种方式过滤掉它们,只保留两者中允许的内容?在安装的磁盘上新创建的文件会发生什么情况?

有很多关于 Linux 权限特定主题的不同文章,但我偶然发现的这些文章都没有完整地解决这个问题。
如果有人有这样一篇文章的链接,那么分享它会非常高兴!

答案1

挂载选项不会更改文件的模式。但可以删除一个权限。例如,noexec 停止文件文件(而不是目录)的执行,nosuid 使 setuid 位的效果无效,nodev 停止 dev 文件工作,readonly 停止写入。安装选项适用于整个安装。并且永远不要添加权限。

“只保留两者允许的内容”——从你的问题来看,这句话总结了这一点。

我认为 @steves 的答案比我的更好,除了:

或者他们以某种方式将它们过滤掉,只保留两者允许的内容?

是的,它是两者的最小子集。

在安装的磁盘上新创建的文件会发生什么情况?

如果您有写权限和 rw 挂载选项,则文件会正常写入。即使安装了nodev,您仍然可以创建设备文件。只是它们不能作为设备文件使用。 setuid、exec 等也是如此。

答案2

例如fstab中的rw是否意味着文件在挂载时将具有读写权限?

这意味着文件系统将以读/写方式挂载,之后访问受文件权限限制。如果以只读方式挂载,则无论权限如何,绝对没有任何内容可以写入文件。

如果他们只读取与该文件关联的内容会发生什么? mount > 选项是否会影响存储在磁盘上的已安装文件的权限?

如果用户只有读取权限,他们将只能获得读取访问权限。无论您挂载为只读还是读写。

或者他们是否以某种方式过滤掉它们,只保留两者中允许的内容?

首先应用安装选项,然后应用文件权限。

在安装的磁盘上新创建的文件会发生什么情况?

如果您以只读方式安装了文件系统,则任何用户都无法在其中创建文件。

如果您安装了读写文件系统,则用户可以在其中创建受权限限制的文件。

答案3

挂载选项不会影响存储的权限位,但会影响有效权限。例如,可能有一个具有执行权限的文件(即已chmod a+x myfile成功,ls -l显示该文件具有执行权限等),但如果使用该选项挂载文件系统noexec,则尝试执行该文件会导致“权限被拒绝” “ 错误。同样,该ro选项会导致任何写入尝试失败,该nodev选项会导致任何访问设备的尝试失败(即使可以创建设备),并且该nosuid选项会导致执行文件的任何尝试忽略 setuid 和 setgid 位。

另一种说法是,决定是否允许文件操作的算法如下所示:

  1. 如果需要写权限并且文件系统已挂载ro,请立即拒绝。
  2. 如果需要执行权限并且文件系统已挂载noexec,请立即拒绝。
  3. 如果文件是设备并且文件系统已挂载nodev,请立即拒绝。
  4. 如果文件的用户是尝试访问的进程组之一,则根据文件系统中存储的用户权限位允许或拒绝。
  5. 如果文件的组是尝试访问的进程组之一,则根据文件系统中存储的用户权限位允许或拒绝。
  6. 根据文件系统中存储的“其他”权限位允许或拒绝。

(我简化为仅显示对于我们的目的来说最重要的部分。其他考虑因素包括访问控制列表,扩展属性例如不可变和仅附加,以及安全模块例如 SELinux 和 AppArmor。最终完整且准确(但不易阅读)的参考资料将是源代码,例如may_openLinux 内核中的函数。)

如果文件系统已挂载,则不会完成 setuid/setgid 确定(不考虑文件元数据中的 setuid/setgid 位)nosuid

相关内容