如何创建指向目录的只读链接?


18

我的脚本之一动态创建了一个符号链接,如下所示:

ln -s /home/hosting/projects/images /home/hosting/projects/demo/images

我怎样才能使通过链接的访问是只读的?

Answers:


18

您可以创建一个只读的bind-mount

mount --bind /path/to/source/ /path/to/dest/
mount -o bind,remount,ro /path/to/dest

是的,这必须在Linux内核2.6.25之后的内核中分两步完成(有关原因,请参见上面的链接)。

或者,作为一个/etc/fstab行示例ref

/path/to/source/ /path/to/dest/ none bind,ro

在这两种方法中,绑定挂载都驻留在虚拟文件系统层(VFS)中,因此,它不是特定于任何文件系统的,也不是真的“挂载”任何东西。因此,基本上,这为您创建了一种符号链接,但这并没有显示出来。

并回答以下有关数据丢失的评论...不,这些说明不会删除任何文件。如果目标路径上存在文件,则此挂载将覆盖该文件。只需卸载即可在下面的文件系统上的路径中列出您的文件。更好 通常,避免安装在非空目标路径的顶部。


1
小心。遵循这些步骤,它删除了我的整个备份目录,并使备份守护程序无法写入该目录。

您能否将此解决方案作为fstab条目提供?
取消

@Throoze你去了;)
gertvdijk

重新安装命令可能应该是:从同一线程mount -o bind,remount,ro /path/to/dest查看lwn.net/Articles/637501
2016年

mount -o remount,ro /path/to/dest给我以下错误:mount: mount point is busy.@gertvdijk
alper

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.