Linux共享文件夹两种方式
共享方式一:借助vm-tools
在桌面新建一个文件夹作为共享文件夹,任意名称均可,接下来在虚拟机中执行命令:
# 安装vm-tools工具
yum -y install open-vm-tools
# 挂载共享文件夹
vmhgfs-fuse .host:/ /mnt/hgfs
执行完毕后需要在虚拟机软件中添加共享文件夹:
做完上述配置后,需要重启虚拟机:
reboot
接下来就OK了,为了排除防火墙干扰,最好直接关闭防火墙:
# 关闭防火墙
systemctl stop firewalld
# 防火墙禁止开机启动
systemctl disable firewalld
共享方式二:借助SMB
Samba是在Linux系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。 SMB(Server Messages Block, 信息服务块)是一种在局域网上共享文件和打印机的一种通信协议, 它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。 SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统,打印机及其他资源。
# 安装samba
yum install -y samba
# 添加一个名为root的samba账号,这与Linux用户的root无任何关系
smbpasswd -a root
# 设置密码
....
# 再次输入密码
....
# 启动刚才添加的samba账号
smbpasswd -e root
关于samba用户的命令如下:
# 添加 Samba 用户帐号
smbpasswd -a sambauser
# 禁用 Samba 用户帐号
smbpasswd -d sambauser
# 启用 Samba 用户帐号
smbpasswd -e sambauser
# 删除 Samba 用户帐号
smbpasswd -x sambauser
修改samba配置文件:
# 先备份一个配置文件
cp /etc/samba/smb.conf /etc/samba/smb.conf.back
# 先新建一个文件夹作为Linux下的共享文件夹
cd ~
mkdir share-folder
chmod -R 777 share-folder/
# 编辑配置文件
vim /etc/samba/smb.conf
smb.conf:
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
#[homes]
# comment = Home Directories
# valid users = %S, %D%w%S
# browseable = No
# read only = No
# inherit acls = Yes
[myshare]
comment = MyShareFolder
path = /root/share-folder
writable = yes
browseable = Yes
create mask = 0664
force create mode = 0664
directory mask = 0775
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
共享默认会将用户的主目录共享 , 这是不安全的 , 所以将其注释掉了。
现在启动/停止/重启服务命令都是一致的:
# 启动smb服务
systemctl start smb
# 停止smb服务
systemctl stop smb
# 重启smb服务
systemctl restart smb
# 查看smb服务状态
systemctl status smb
如果 Windows 下访问 Linux 下共享目录, 提示没有权限:
1、确保 Linux 下防火墙关闭或者是开放共享目录权限
2、确保 Samba 服务器配置文件 smb.conf 设置没有问题
3、确保 setlinux 关闭 , 可以用 setenforce 0 命令执行; 默认 SELinux 禁止网络上对 Samba 服务器上的共享目录进行写操作
Samb 还需要开放下面四个端口:
UDP 137、UDP 138、TCP 139、TCP 445
云服务器文件夹共享
由于云服务器445端口不开放,所以需要修改服务器端口,也就是smb ports = 4455这一句配置:
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
smb ports = 4455
[tenent-cloud]
comment = MyShareFolder
path = /root/tenent-cloud
writable = yes
browseable = Yes
create mask = 0664
force create mode = 0664
directory mask = 0775
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
当然也可以定义其他端口,我这里选择的端口是4455,需要在云服务器的安全组配置里进出设置开放4455端口。接下来在Windows上配置端口转发,因为Windows默认配置为445,打开管理员powershell:
# 配置端口转发
netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport=4455 connectaddress=85.80.220.107
# 删除配置的端口转发
netsh interface portproxy delete v4tov4 listenaddress=85.80.220.107 listenport=4455
上面的例子中,85.80.220.107是云服务的地址,4455是云服务的端口,接下来只需要在本地访问127.0.0.1即可访问到云服务器的服务:
如果访问到的是本地的共享,那么需要把本地的文件共享服务给关闭(必须禁用,再重启电脑):
这样电脑就等于有一个免费的网盘了。