在 Linux 上挂载权限

Ere*_*ted 1 fedora mount fstab

我有一个关于在 Linux Fedora 中挂载的问题。我的主目录中有一个挂载点。挂载点位于 /home/user/project 并在 fstab 中添加了以下行:

/dev/mapper/fedora-proj /home/user/project ext4 defaults 1 2
Run Code Online (Sandbox Code Playgroud)

目录 /home/user/project 的文件权限为 0755 并且归用户所有。但是当我执行 'mount -a' 时,目录所有者更改为 root 并且权限为 777。我知道 ext2/3/4 没有 uid= 和 gid= 选项,但是为什么挂载点接收硬编码文件挂载期间的权限以及如何更改它?

聚苯乙烯

测试是在 Fedora 25 上进行的。当我在 Fedora 23 上执行完全相同的过程时,我看到了不同的行为:挂载目录权限更改为 755(挂载前为 0777)

der*_*ert 5

挂载点根目录的权限存储在挂载的文件系统上(这样做实际上很有意义;否则,根目录的权限/将存储在哪里?)。你改变他们正常的方式:chmodchown,等。

在挂载之前,您会看到父文件系统上挂载点目录的权限。挂载后,您将看到已挂载文件系统根目录的权限。

示例:您有两个文件系统:

FS-A             FS-B
/                /
  /mnt             /file1
    /foo           /file2
  /etc           
?
Run Code Online (Sandbox Code Playgroud)

请注意,它们都有一个最顶层/根目录 ( /),就像所有 (Unix) 文件系统一样。FS-A 有两个子目录(/mnt/etc),并且/mnt有一个子目录/mnt/foo。FS-B 有两个文件,/file1/file2. 作为 Unix 文件系统,所有这些目录和文件都有一个用户、一个组和权限。现在,让我们将 FS-A 设为根文件系统,并将 FS-B 挂载到/mnt/foo. 然后我们得到:

/                   # FS-A /
  /mnt              # FS-A /mnt
    /foo            # FS-A /mnt/foo *or* FS-B /
      /file1        # FS-B /file1
      /file2        # FS-B /file2
  /etc              # FS-A /etc
?
Run Code Online (Sandbox Code Playgroud)

请注意我们如何选择是什么/mnt/foo——它可以/mnt/foo来自 FS-A 或/来自 FS-B。两者的路径完全相同。Unix 的设计者选择了 FS-B。

PS:您的 fstab 行缺少文件系统类型。应该在选项 ( defaults)之前。