![迁移具有相同权限的挂载不起作用](https://linux22.com/image/7299/%E8%BF%81%E7%A7%BB%E5%85%B7%E6%9C%89%E7%9B%B8%E5%90%8C%E6%9D%83%E9%99%90%E7%9A%84%E6%8C%82%E8%BD%BD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我有两个坐骑/mount1
和/mount2
。我运行了命令:
rsync -azrt /mount1/* /mount2/
克隆从/mount1
到 的所有内容/mount2
。
然后我改变了/etc/fstab
(见下文)删除/mount1
并安装到,/mount2
但/mount1
由于权限原因,事物(包括我的电子邮件服务器本地用户文件夹)不再正常工作,即使在将权限与安装前后的安装进行比较时,它们是相同的?!
/etc/fstab
之前(工作):
UUID="3999A4F22570EAC4" /mount2 ntfs-3g nobootwait,permissions,locale=en_US.utf8 0 2
mhddfs#/mount3,/mount4 /mount1 fuse defaults,allow_other,nobootwait,nonempty,uid=1000,gid=1000,umask=007 0 0
/etc/fstab
之后(不工作):
UUID="3999A4F22570EAC4" /mount1 ntfs-3g nobootwait,permissions,locale=en_US.utf8 0 2
哪里UUID="3999A4F22570EAC4"
有/mount2
前面的内容/mount1
答案1
通用保险丝选项
1)我注意到文件系统挂载allow_other
上没有设置ntfs-3g
。 FUSE默认不允许其他用户访问。 mhddfs
是一个 FUSE 文件系统,也是ntfs-3g
(但请参阅下一节)。
2)当你使用 时allow_other
,你还要考虑权限检查。 FUSE默认不检查权限。因此,只需添加allow_other
到文件系统即可使其可供所有用户访问。这可能是不可取的;单独的用户 ID 通常用于包含服务,例如 CUPS 打印机守护程序,以防它们受到网络攻击。要在通用 FUSE 文件系统上启用用户/组/模式权限检查,该选项称为default_permissions
。
NTFS-3G 特定行为
1 -> 根据其man
页面,默认ntfs-3g
启用。 allow_other
(FUSE 默认值只允许 root 用户执行此操作。不过,这不是问题,因为您使用的mount
是 root 用户身份运行的)。
2 -> 听起来该ntfs-3g
选项permissions
为您启用了权限检查。否则,您不会注意到任何权限错误。 (SELinux 可能可以,但您没有使用 SELinux,因为您使用的是 Ubuntu。Ubuntu AppArmor 被描述为基于路径,因此根据您的描述,我认为它不太可能导致问题)。
论文
我相信您的 ntfs-3g 挂载已设置为执行权限检查,并且 FUSE 不会单独阻止其他用户的访问。这对于fstab
用于提供系统目录(例如/var/mail
.
但是,您的mhddfs
安装本身不会执行权限检查,因为它没有default_permissions
设置。这可以解释为什么该mhddfs
设置能够工作(尽管选项uid,gid,umask
只允许访问您的用户 ID 1000)。您没有显示底层文件系统,所以我不知道它们是否正在检查权限,但我怀疑这只mhddfs
是以 root 身份运行并避免以这种方式进行权限检查。
这是您可以在安装上运行的测试mhddfs
。它应该显示是否正在检查权限位。
mkdir dir
chmod a-w dir # make directory read-only
touch dir/t # attempt writing to directory
要解决权限错误,您需要确定哪些用户应该拥有对相关文件的访问权限,并相应地设置正确的权限。 您从未说过哪个用户(甚至哪个软件)未通过权限检查,因此很难说得更具体。