当我尝试使用以下命令向多个 FTP 用户授予对同一目标目录的访问权限时:
sudo mount --bind /home/max/home/ExLand /home/riven/Desktop/ExLand
sudo mount --bind /home/r1ven/home/ExLand /home/riven/Desktop/ExLand/etc/fstab
/etc/fstab
/home/r1ven/home/ExLand /home/riven/Desktop/ExLand none bind 0 0
/home/max/home/ExLand /home/riven/Desktop/ExLand none bind 0 0
/var/log/syslog 中出现错误
Dec 12 18:32:31 riven kernel: [ 2.131397] systemd-fstab-generator[292]: Failed to create unit file /run/systemd/generator/home-riven-Desktop-ExLand.mount, as it already exists. Duplicate entry in /etc/fstab?
Dec 12 18:32:31 riven kernel: [ 2.131711] systemd[284]: /usr/lib/systemd/system-generators/systemd-fstab-generator failed with exit status 1.
结果,重启后,只挂载了一个目录:
/home/r1ven/home/ExLand /home/riven/Desktop/ExLand 无绑定 0 0
第二个目录未安装并且无法访问。
告诉我我做错了什么?)
当我手动挂载目录时,重启前一切正常,两个 FTP 用户都可以使用一个目录,但是,重启后,只有上述目录可用,第二个目录完全无法访问,但如果我再次手动挂载,它会出现。
答案1
您正在对同一目标安装点进行两个相互叠加的绑定安装。
步骤1:
sudo mount --bind /home/max/home/ExLand /home/riven/Desktop/ExLand
现在您将能够/home/max/home/ExLand
访问/home/riven/Desktop/ExLand
.
步骤 2:(假设/etc/fstab
命令末尾的 是拼写错误)
sudo mount --bind /home/r1ven/home/ExLand /home/riven/Desktop/ExLand
这将使 处/home/r1ven/home/ExLand
可访问/home/riven/Desktop/ExLand
,但之前的绑定安装将不再可访问。 (如果您有现有会话cd
,/home/riven/Desktop/ExLand
他们可能仍然会看到/home/max/home/ExLand
它的版本,但任何新的访问都只会看到该/home/r1ven/home/ExLand
版本。)
如果用户max
在 进行更改/home/max/home/ExLand
,则用户r1ven
将永远不会在 处看到这些更改/home/r1ven/home/ExLand
,因为它们仍然是两个独立的位置。
根据目标安装点名称生成单元名称,因此像这样的两个重叠的安装目标都将具有相同的单元名称,这是一个错误systemd-fstab-generator
。.mount
由于像这样重叠的安装点不是很有用并且通常是一个错误,因此该错误可能是一件好事。
如果您的目标是让用户max
和r1ven
用户都访问/home/riven/Desktop/ExLand
,您应该以相反的方式进行绑定安装。
可以这样想:对于mount --bind
,来源是数据所在的地方真的是;这目标是您希望看到它的地方。
因此,/etc/fstab
条目将是:
/home/riven/Desktop/ExLand /home/r1ven/home/ExLand none bind 0 0
/home/riven/Desktop/ExLand /home/max/home/ExLand none bind 0 0
之后,如果max
将文件添加到/home/max/home/ExLand
,用户r1ven
也会在/home/r1ven/home/ExLand
处看到它们(假设正确的目录权限)...因为这两个位置现在实际上都在访问/home/riven/Desktop/ExLand
。