在Linux服务器之间配置共享文件,通常可以采用两种主要的方法:网络文件系统(NFS)和Samba。
一、NFS
1、安装NFS服务
在服务端和客户端上都需要安装NFS服务。使用以下命令安装NFS和相关的工具
在Debian/Ubuntu系统上
#更新软件包列表
sudo apt update
#安装NFS服务器和客户端软件包:nfs-kernel-server提供了NFS服务器的功能,nfs-common包含了NFS客户端和服务器都需要的通用工具和库。
sudo apt install nfs-kernel-server nfs-common
Red Hat/CentOS系统上
yum install -y nfs-utils rpcbind
2、配置防火墙(如果服务器配置了防火墙)
NFS所需端口(通常为111和2049)
对于使用ufw防火墙的Debian/Ubuntu系统,可以使用以下命令:
sudo ufw allow 111/tcp
sudo ufw allow 111/udp
sudo ufw allow 2049/tcp
sudo ufw allow 2049/udp
sudo ufw reload
对于使用firewalld防火墙的Red Hat/CentOS系统,可以使用以下命令:
sudo firewall-cmd --add-port=2049/tcp --permanent
sudo firewall-cmd --add-port=2049/udp --permanent
sudo firewall-cmd --reload
对于iptables防火墙的Red Hat/CentOS系统:
sudo iptables -A INPUT p tcp --dport 2049 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 2049 -j ACCEPT
sudo service iptables save
sudo service iptables restart
3、配置共享目录
创建要共享的目录
mkdir /home/share
编辑 /etc/exports 文件,添加共享目录和访问权限,
#其中 192.168.1.191/24 是允许访问NFS服务的网段,rw 表示读写权限,sync 表示数据同步写入磁盘
/home/share 192.168.1.191/24(rw, sync)
#或者 *:表示所有网络中的客户端都可以访问这个共享目录
/home/share *(rw,sync)
4、使配置的共享目录生效
sudo exportfs -a
5、启动NFS服务
在Debian/Ubuntu系统上,可以使用以下命令
sudo systemctl start nfs-kernel-server
#设置NFS服务为开机自启动
sudo systemctl enable nfs-kernel-server
在Red Hat/CentOS系统上,可以使用以下命令
sudo systemctl start nfs-server
sudo systemctl enable nfs-server
6、检查NFS服务状态
在Debian/Ubuntu系统上
sudo systemctl status nfs-kernel-server
在Red Hat/CentOS系统上
sudo systemctl status nfs-server
7、客户端挂载共享
#/home/share 是共享目录 /home/share1 客户端挂载目录
sudo mount -t nfs 服务器IP地址:/home/share /home/share1
8、验证是否挂在共享
#查看挂载的文件系统
df -h
二、Samba
1、安装
在Debian/Ubuntu上安装
sudo apt-get update
sudo apt-get install samba
在CentOS/RHEL上安装
sudo yum install samba
2、设置防火墙(如果有防火墙的话)
开放Samba服务需要用到的端口(139和445)
对于使用firewalld防火墙的Red Hat/CentOS系统,可以使用以下命令:
firewall-cmd --zone=public --add-port=139/tcp --permanent
firewall-cmd --zone=public --add-port=139/udp --permanent
firewall-cmd --zone=public --add-port=445/tcp --permanent
firewall-cmd --zone=public --add-port=445/udp --permanent
firewall-cmd --reload
使用iptables防火墙的Red Hat/CentOS系统
sudo iptables -A INPUT -p tcp --dport 137 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 138 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 139 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 445 -j ACCEPT
sudo iptables-save > /etc/iptables/rules.v4
对于使用ufw防火墙的Debian/Ubuntu系统,可以使用以下命令:
sudo ufw allow 139/udp
sudo ufw allow 445/tcp
sudo ufw reload
3、配置Samba服务端
编辑/etc/samba/smb.conf文件,在文件末尾添加一个名为myShare共享目录的配置,
[myShare]
comment = Shared Directory
path = /home/share
browseable = yes
read only = no
guest ok = yes
path 指向你想要共享的目录,browseable 表示该共享是否可在网络邻居中看到,guest ok 表示是否允许匿名访问,read only 表示是否只读
4、创建用户
sudo useradd share # 创建用户share
sudo smbpasswd -a share # 为新用户share设置密码
5、创建共享目录并设置权限
sudo mkdir -p /home/share
sudo chmod -R 777 /home/share
6、启动
在Debian/Ubuntu系统,可以使用以下命令:
sudo systemctl start smbd
sudo systemctl enable smbd
Red Hat/CentOS系统
sudo systemctl start smb
sudo systemctl enable smb
7、客户端挂载共享
#192.168.1.191 服务器ip地址 myShare 共享目录名称 username是用于访问共享的用户名
smbclient //192.168.1.191/myShare -U username
也可以
#/home/share是本地挂载点 username和password是用于访问共享的用户名和密码。
sudo mount -t cifs //192.168.1.191/myShare /home/share -o username=用户名,password=密码
8、验证挂载
#查看挂载情况
df -h
三、NFS和Samba的区别
1、协议与应用场景
NFS:是TCP/IP协议集提供的一种子协议,主要用于Linux/Unix主机之间的文件共享,局域网内使用较多,设置简单且已成为Linux/Unix的标配
Samba:是一种基于SMB/CIFS协议的文件共享解决方案,支持在Windows、Linux、Unix等多种操作系统之间实现文件共享,包括文件、打印机等,实现跨平台共享
2、工作效率与兼容性
NFS:工作效率高,更简洁、方便且原生支持UNIX/LINUX系统,兼容性在UNIX/LINUX环境中更好
Samba:由于需要兼容Windows系统,配置相对复杂,但能与Windows系统紧密集成
3、优势
Samba主要优势在于其灵活的访问控制机制,支持基于用户和组的权限设置
NFS的主要优势在于其高性能和可扩展性,特别是在大型分布式系统中,NFS可以轻松地实现文件共享和访问