Linux共享文件夹两种方式

共享方式一:借助vm-tools

在桌面新建一个文件夹作为共享文件夹,任意名称均可,接下来在虚拟机中执行命令:

1# 安装vm-tools工具
2yum -y install open-vm-tools
3
4# 挂载共享文件夹
5vmhgfs-fuse .host:/ /mnt/hgfs

执行完毕后需要在虚拟机软件中添加共享文件夹:

做完上述配置后,需要重启虚拟机:

1reboot

接下来就OK了,为了排除防火墙干扰,最好直接关闭防火墙:

1# 关闭防火墙
2systemctl stop firewalld
3
4# 防火墙禁止开机启动
5systemctl disable firewalld

共享方式二:借助SMB

Samba是在Linux系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。 SMB(Server Messages Block, 信息服务块)是一种在局域网上共享文件和打印机的一种通信协议, 它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。 SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统,打印机及其他资源。

 1# 安装samba
 2yum install -y samba
 3
 4# 添加一个名为root的samba账号,这与Linux用户的root无任何关系
 5smbpasswd -a root
 6
 7# 设置密码
 8....
 9
10# 再次输入密码
11....
12
13# 启动刚才添加的samba账号
14smbpasswd -e root

关于samba用户的命令如下:

 1# 添加 Samba 用户帐号
 2smbpasswd -a sambauser
 3
 4# 禁用 Samba 用户帐号
 5smbpasswd -d sambauser
 6
 7# 启用 Samba 用户帐号
 8smbpasswd -e sambauser
 9
10# 删除 Samba 用户帐号
11smbpasswd -x sambauser

修改samba配置文件:

 1# 先备份一个配置文件
 2cp /etc/samba/smb.conf /etc/samba/smb.conf.back
 3
 4# 先新建一个文件夹作为Linux下的共享文件夹
 5cd ~
 6mkdir share-folder
 7chmod -R 777 share-folder/
 8
 9# 编辑配置文件
10vim /etc/samba/smb.conf

smb.conf:

 1# See smb.conf.example for a more detailed config file or
 2# read the smb.conf manpage.
 3# Run 'testparm' to verify the config is correct after
 4# you modified it.
 5
 6[global]
 7        workgroup = SAMBA
 8        security = user
 9
10        passdb backend = tdbsam
11
12        printing = cups
13        printcap name = cups
14        load printers = yes
15        cups options = raw
16
17#[homes]
18#       comment = Home Directories
19#       valid users = %S, %D%w%S
20#       browseable = No
21#       read only = No
22#       inherit acls = Yes
23
24[myshare]
25        comment = MyShareFolder
26        path = /root/share-folder
27        writable = yes
28        browseable = Yes
29        create mask = 0664
30        force create mode = 0664
31        directory mask = 0775
32[printers]
33        comment = All Printers
34        path = /var/tmp
35        printable = Yes
36        create mask = 0600
37        browseable = No
38
39[print$]
40        comment = Printer Drivers
41        path = /var/lib/samba/drivers
42        write list = @printadmin root
43        force group = @printadmin
44        create mask = 0664
45        directory mask = 0775

共享默认会将用户的主目录共享 , 这是不安全的 , 所以将其注释掉了。

现在启动/停止/重启服务命令都是一致的:

 1# 启动smb服务
 2systemctl start smb
 3
 4# 停止smb服务
 5systemctl stop smb
 6
 7# 重启smb服务
 8systemctl restart smb
 9
10# 查看smb服务状态
11systemctl status smb

如果 Windows 下访问 Linux 下共享目录, 提示没有权限:

1、确保 Linux 下防火墙关闭或者是开放共享目录权限

2、确保 Samba 服务器配置文件 smb.conf 设置没有问题

3、确保 setlinux 关闭 , 可以用 setenforce 0 命令执行; 默认 SELinux 禁止网络上对 Samba 服务器上的共享目录进行写操作

Samb 还需要开放下面四个端口:

1UDP 137、UDP 138、TCP 139、TCP 445

云服务器文件夹共享

由于云服务器445端口不开放,所以需要修改服务器端口,也就是smb ports = 4455这一句配置:

 1# See smb.conf.example for a more detailed config file or
 2# read the smb.conf manpage.
 3# Run 'testparm' to verify the config is correct after
 4# you modified it.
 5
 6[global]
 7	workgroup = SAMBA
 8	security = user
 9
10	passdb backend = tdbsam
11
12	printing = cups
13	printcap name = cups
14	load printers = yes
15	cups options = raw
16	smb ports = 4455
17[tenent-cloud]
18        comment = MyShareFolder
19        path = /root/tenent-cloud
20        writable = yes
21        browseable = Yes
22        create mask = 0664
23        force create mode = 0664
24        directory mask = 0775
25
26[printers]
27	comment = All Printers
28	path = /var/tmp
29	printable = Yes
30	create mask = 0600
31	browseable = No
32
33[print$]
34	comment = Printer Drivers
35	path = /var/lib/samba/drivers
36	write list = @printadmin root
37	force group = @printadmin
38	create mask = 0664
39	directory mask = 0775

当然也可以定义其他端口,我这里选择的端口是4455,需要在云服务器的安全组配置里进出设置开放4455端口。接下来在Windows上配置端口转发,因为Windows默认配置为445,打开管理员powershell:

1# 配置端口转发
2netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport=4455 connectaddress=85.80.220.107
3
4# 删除配置的端口转发
5netsh interface portproxy delete v4tov4 listenaddress=85.80.220.107 listenport=4455

上面的例子中,85.80.220.107是云服务的地址,4455是云服务的端口,接下来只需要在本地访问127.0.0.1即可访问到云服务器的服务:

如果访问到的是本地的共享,那么需要把本地的文件共享服务给关闭(必须禁用,再重启电脑):

这样电脑就等于有一个免费的网盘了。