我的一个脚本动态创建一个符号链接,如下所示:
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/