# linux挂载共享文件夹

# VirtualBox共享文件夹权限问题

我之前一直习惯在VMware中的Linux环境运行Docker,现在更换了VirtualBox,我把共享文件夹中的文件挂载到Docker中会出现权限问题,比如在容器中挂载文件夹为空,容器不能读写挂载文件夹中的文件。这是因为VirtualBox(6.1.x)的默认挂载用户为root,用户组为vboxsf,文件的权限为770,也就是用户组之外的用户权限没有,这就导致容器内以一些其他用户运行的程序没有权限操作该文件夹的内容,这个时候就需要更改VirtualBox默认的挂载。

# 操作流程

首先将VirtualBox中的自动挂载取消,其配置如下:

mountInfo

然后打开虚拟机,先手动挂载下,进行测试:

mount -t vboxsf -o uid=0,gid=0,umask=0000 sharedFolder /mnt/hgfs/sharedFolder

然后我们让虚拟机开机自动挂载,打开/etc/fstab,在最后一行添加:

sharedFolder /mnt/hgfs/sharedFolder vboxsf auto,rw,uid=0,gid=0,umask=0000 0 0

这样虚拟机开机的时候会自动挂载该目录,其权限是777,所属用户为root,所属用户组为root。

# linux挂载域用户smb文件夹

  1. 需要先有一个凭据文件

    username=user
    password=pass
    domain=domain_name
    
    1
    2
    3
  2. 尝试使用mount命令:

    mount -t cifs //ip/sharedfolder /mnt/hgfs/sharedFolder -o vers=3.0,dir_mode=0777,file_mode=0777,mfsymlinks,credentials=/root/.userinfo

  3. 让虚拟机开机自动挂载,打开/etc/fstab,在最后一行添加:

    //ip/sharedfolder /mnt/hgfs/sharedFolder cifs vers=3.0,dir_mode=0777,file_mode=0777,mfsymlinks,credentials=/root/.userinfo 0 0

# linux挂载nfs文件夹

# nfs服务器

# 安装nfs服务器
apt-get install nfs-kernel-server
yum install nfs-utils
# 配置nfs
/shared_directory 192.168.1.0/24(rw,async,no_root_squash,no_subtree_check)
# 重新加载nfs配置
exportfs -a
# 启动nfs服务
systemctl start nfs-kernel-server
systemctl start nfs-server
# 涉及开机启动
systemctl enable nfs-kernel-server
systemctl enable nfs-server
# 配置防火墙
ufw allow 111/tcp
ufw reload
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# nfs客户端

需要先安装nfs客户端

apt install nfs-common
1

查看NFS服务器上的共享目录:

showmount -e 192.168.3.1
1

这里会有一个漏洞,CVE-1999-0554 NFS共享信息泄漏修复方法 (opens new window),需要根据里面的方法进行限制,以下操作在nfs服务器上操作:

/etc/hosts.allow

mountd:10.8.60.1,10.8.60.2:allow
rpcbind:10.8.60.1,10.8.60.2:allow 
Portmap:10.8.60.1,10.8.60.2:allow

/etc/hosts.deny

mountd:ALL:deny
rpcbind:ALL:deny
Portmap:ALL:deny

#重启服务
systemctl restart rpcbind
systemctl restart nfs-server
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 临时挂载

mount -t nfs 192.168.3.1:/data /mnt/data
umount /mnt/
1
2

# 通过fstab挂载

vi /etc/fstab
192.168.3.1:/data  /nfs nfs defaults 0 0
mount -a
1
2
3