一、使用Samba实现CentOS文件共享(适用于Windows/Linux跨平台共享)
Samba是CentOS上最常用的文件共享服务,支持与Windows、Linux、macOS等系统无缝通信,以下是详细配置步骤:
通过YUM/DNF包管理器安装Samba主程序、客户端工具及通用配置文件:
sudo yum install samba samba-client samba-common -y # CentOS 7
sudo dnf install samba samba-client samba-common -y # CentOS 8/Stream
安装完成后,Samba服务不会自动启动,需后续手动开启。
选择需要共享的目录(如/srv/samba/my_share
),创建目录并赋予初始权限(生产环境建议细化权限,避免过度开放):
sudo mkdir -p /srv/samba/my_share
sudo chmod -R 777 /srv/samba/my_share # 临时开放所有权限(测试用)
注意:chmod 777
仅为测试方便,正式环境中应根据用户需求设置最小权限(如770
)。
编辑Samba主配置文件/etc/samba/smb.conf
(建议先备份):
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo nano /etc/samba/smb.conf
在文件末尾添加共享定义(以my_share
为例):
[my_share]
comment = My Personal Shared Folder # 共享描述
path = /srv/samba/my_share # 共享目录路径
browseable = yes # 是否允许浏览
writable = yes # 是否可写
valid users = user1 user2 @mygroup # 允许访问的用户/组(需提前创建)
create mode = 0664 # 新建文件权限
directory mode = 0775 # 新建目录权限
关键参数说明:
valid users
:限制访问用户,提升安全性(避免使用guest ok = yes
开放匿名访问);create mode
/directory mode
:控制共享内文件的默认权限。Samba用户需为系统用户,且需通过smbpasswd
命令添加Samba密码:
sudo useradd user1 # 创建系统用户(若不存在)
sudo smbpasswd -a user1 # 添加Samba用户并设置密码
输入密码后,该用户即可通过Samba访问共享。
启动Samba核心服务(smb
)及NetBIOS服务(nmb
,可选,用于Windows网络发现):
sudo systemctl start smb
sudo systemctl enable smb # 开机自启
sudo systemctl start nmb # 可选
sudo systemctl enable nmb # 可选
通过systemctl status smb
命令检查服务状态,确保无报错。
若系统启用了firewalld
防火墙,需添加Samba服务规则:
sudo firewall-cmd --permanent --add-service=samba # 永久放行
sudo firewall-cmd --reload # 重新加载规则
若使用iptables
,需手动添加端口137-139
(UDP/TCP)和445
(TCP)规则。
smbclient
命令测试连接:smbclient //localhost/my_share -U user1
输入密码后,若进入共享目录,说明配置成功。\\<CentOS_IP>\my_share
,输入Samba用户名和密码即可访问。telnet <IP> 445
测试端口连通性;chown -R user1:user1 /srv/samba/my_share
),且SELinux未阻止访问(临时关闭测试:setenforce 0
)。二、使用NFS实现CentOS文件共享(适用于Linux/Unix系统间共享)
NFS(Network File System)是Linux/Unix系统间的原生共享协议,传输效率高,但不支持Windows系统(需安装NFS客户端)。
在服务端安装nfs-utils
(含NFS服务)和rpcbind
(RPC端口映射工具):
sudo yum install nfs-utils rpcbind -y # CentOS 7
sudo dnf install nfs-utils rpcbind -y # CentOS 8/Stream
安装完成后,启动rpcbind
(NFS依赖)和服务端服务:
sudo systemctl start rpcbind
sudo systemctl enable rpcbind
sudo systemctl start nfs-server
sudo systemctl enable nfs-server
选择共享目录(如/mnt/nfs_share
),创建目录并设置权限:
sudo mkdir -p /mnt/nfs_share
sudo chmod -R 777 /mnt/nfs_share # 临时开放权限(测试用)
注意:生产环境中建议将共享目录所有者设置为特定用户(如chown -R nfsuser:nfsuser /mnt/nfs_share
)。
编辑/etc/exports
文件(定义共享目录及访问权限):
sudo nano /etc/exports
添加以下内容(以/mnt/nfs_share
为例,允许192.168.1.0/24
网段访问):
/mnt/nfs_share 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)
参数说明:
rw
:允许读写;sync
:同步写入磁盘(避免数据丢失);no_root_squash
:允许root用户访问(谨慎使用,若不需要可改为root_squash
);no_subtree_check
:禁用子树检查(提升性能)。导出共享目录,使配置生效:
sudo exportfs -ra
通过showmount -e localhost
命令查看已共享的目录,确认配置正确。
NFS需要开放多个端口(111
、2049
等),可通过firewalld
添加服务规则:
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload
在客户端安装nfs-utils
:
sudo yum install nfs-utils -y # CentOS 7
sudo dnf install nfs-utils -y # CentOS 8/Stream
创建挂载点(如/mnt/nfs_client
),并挂载共享目录:
sudo mkdir -p /mnt/nfs_client
sudo mount 192.168.1.100:/mnt/nfs_share /mnt/nfs_client # 替换为服务端IP
可选:将挂载信息添加到/etc/fstab
文件,实现开机自动挂载:
192.168.1.100:/mnt/nfs_share /mnt/nfs_client nfs defaults 0 0
安全提示:
192.168.1.0/24
),避免暴露在公网;guest ok = yes
(Samba)或rw
(NFS)开放匿名访问,建议通过用户认证控制权限;