Linux共享文件夹两种方式
共享方式一:借助vm-tools
在桌面新建一个文件夹作为共享文件夹,任意名称均可,接下来在虚拟机中执行命令:
执行完毕后需要在虚拟机软件中添加共享文件夹:
做完上述配置后,需要重启虚拟机:
1reboot
接下来就OK了,为了排除防火墙干扰,最好直接关闭防火墙:
共享方式二:借助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即可访问到云服务器的服务:
如果访问到的是本地的共享,那么需要把本地的文件共享服务给关闭(必须禁用,再重启电脑):
这样电脑就等于有一个免费的网盘了。