使用mount挂载特定目录到公共文件夹以便解决文件访问权限与修改更新之间的冲突

神秘代码:

1
mount -o bind,ro,username=nginx /home/jeremie/WingImaging/WebFront/dist/ /usr/share/nginx/webfront/

fstab:

1
2
3
4
5
6
7
8
9
10
11
12
13

#
# /etc/fstab
# Created by anaconda on Tue Jan 16 10:02:13 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b0a16d98-3b8c-400f-948d-0092477704fe / ext4 defaults 1 1
UUID=1c944257-c4f0-4023-88c6-ded8ef40ebda /data1 ext4 defaults 0 2
/home/jeremie/WingImaging/WebFront/dist/ /usr/share/nginx/webfront/ none defaults,noauto,x-systemd.automount,nofail,bind,ro,username=nginx 0 0


原理:
使用mount的bind模式,将特定文件夹挂载到另一位置,并施以特定用户身份和特定访问权限以便其他程序读取
在fstab中以此种方式设置可实现同样的功能

注意其中的noauto,x-systemd.automount两个参数,表示其只在首次访问时才自动挂载,以便等待真实文件系统准备就绪
其中的nofail参数表示允许失败
bind,ro,username=nginx参数表示此挂载为bind模式,且read only,挂载后用户身份为nginx