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

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

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

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

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

答案1

您可以创建一个只读绑定挂载

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

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

或者,作为/etc/fstab示例參考

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

无论采用哪种方法,绑定挂载都位于虚拟文件系统层 (VFS) 中,因此它并不特定于任何文件系统,您也不必真正“挂载”任何东西。因此,基本上,这会为您创建一种符号链接,但不会显示出来。

回答下面关于数据丢失的评论...不,这些说明不会删除任何文件。如果目标路径上有文件,此挂载将覆盖此文件。只需卸载即可在下方文件系统的路径中列出文件。更好的是;一般来说,避免在非空目标路径上挂载。

答案2

使用一个命令挂载 bind readonly:

mount --bind -r /path/to/source/ /path/to/dest/

卸下

umount /path/to/dest/

相关内容