一、linux文件共享概述
1.1 文件共享的重要性
在现代计算环境中,文件共享是实现多台计算机之间数据交换和协作的基础。无论是企业内部的文档共享、开发团队间的代码协作,还是家庭网络中的媒体文件访问,都需要高效可靠的文件共享解决方案。
主要文件共享协议对比:
| 协议 | 适用场景 | 优势 | 劣势 |
|---|---|---|---|
| nfs | linux/unix环境 | 高性能、原生支持 | windows兼容性差 |
| samba/cifs | 跨平台环境 | 良好的windows兼容性 | 配置相对复杂 |
| ftp | 文件传输 | 简单易用 | 安全性较差 |
1.2 选择合适的技术方案
# 检查系统当前的文件共享服务 ps aux | grep -e '(nfs|samba|smbd|nmbd)' netstat -tlnp | grep -e '(139|445|2049)' # 查看系统支持的协议 cat /proc/filesystems | grep -e '(nfs|cifs)'
二、nfs文件共享
2.1 nfs服务端配置
安装nfs服务器:
# ubuntu/debian sudo apt update sudo apt install nfs-kernel-server # centos/rhel sudo yum install nfs-utils # 或者 sudo dnf install nfs-utils # 启动服务 sudo systemctl start nfs-server sudo systemctl enable nfs-server
配置nfs共享:
# 创建共享目录 sudo mkdir -p /srv/nfs/share sudo chown nobody:nogroup /srv/nfs/share sudo chmod 755 /srv/nfs/share # 编辑exports文件 sudo vim /etc/exports # 添加以下内容: /srv/nfs/share 192.168.1.0/24(rw,sync,no_subtree_check) /srv/nfs/share 10.0.0.0/8(ro,sync,no_subtree_check) /home/public *(rw,sync,no_root_squash) # 应用配置 sudo exportfs -ra sudo exportfs -v
nfs配置参数说明:
rw:读写权限ro:只读权限sync:同步写入async:异步写入no_subtree_check:不检查子目录权限no_root_squash:信任root用户
2.2 nfs客户端配置
挂载nfs共享:
# 安装客户端工具 sudo apt install nfs-common # ubuntu/debian sudo yum install nfs-utils # centos/rhel # 创建本地挂载点 sudo mkdir -p /mnt/nfs-share # 手动挂载 sudo mount -t nfs 192.168.1.100:/srv/nfs/share /mnt/nfs-share # 验证挂载 df -ht | grep nfs mount | grep nfs
配置自动挂载:
# 编辑fstab文件 sudo vim /etc/fstab # 添加以下行: 192.168.1.100:/srv/nfs/share /mnt/nfs-share nfs defaults 0 0 # 或者使用更详细的选项: 192.168.1.100:/srv/nfs/share /mnt/nfs-share nfs rw,hard,intr,timeo=300,retrans=3 0 0 # 测试挂载 sudo mount -a
2.3 nfs高级配置
性能优化配置:
# 服务器端调整 echo 'rpcnfsdcount=32' >> /etc/default/nfs-kernel-server # 客户端调整 mount -t nfs -o rsize=32768,wsize=32768,hard,intr,timeo=300,retrans=3 \ 192.168.1.100:/srv/nfs/share /mnt/nfs-share
安全配置:
# 限制访问ip范围 /srv/nfs/share 192.168.1.50(rw,sync) 192.168.1.51(ro,sync) # 使用主机名 /srv/nfs/share nfs-client.example.com(rw,sync)
三、samba文件共享
3.1 samba服务端配置
安装samba服务器:
# ubuntu/debian sudo apt update sudo apt install samba samba-common-bin # centos/rhel sudo yum install samba samba-client # 或者 sudo dnf install samba samba-client # 启动服务 sudo systemctl start smbd nmbd sudo systemctl enable smbd nmbd
基础samba配置:
# 备份原始配置
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
# 编辑配置文件
sudo vim /etc/samba/smb.conf
# 在文件末尾添加:
[global]
workgroup = workgroup
server string = samba server %v
netbios name = ubuntu-server
security = user
map to guest = bad user
dns proxy = no
[public]
comment = public share
path = /srv/samba/public
browseable = yes
writable = yes
guest ok = yes
read only = no
create mask = 0644
directory mask = 0755
[secured]
comment = secured share
path = /srv/samba/secured
valid users = @samba-users
browseable = yes
writable = yes
guest ok = no
read only = no
创建共享目录和用户:
# 创建共享目录
sudo mkdir -p /srv/samba/{public,secured}
sudo chmod 777 /srv/samba/public
sudo chmod 775 /srv/samba/secured
# 创建用户组和用户
sudo groupadd samba-users
sudo useradd -m -s /sbin/nologin sambauser
sudo usermod -ag samba-users sambauser
# 设置samba密码
sudo smbpasswd -a sambauser
# 设置目录权限
sudo chgrp samba-users /srv/samba/secured
3.2 samba客户端访问
linux客户端访问:
# 安装客户端工具 sudo apt install smbclient cifs-utils # ubuntu/debian sudo yum install samba-client cifs-utils # centos/rhel # 查看共享列表 smbclient -l //192.168.1.100 -u sambauser # 交互式访问 smbclient //192.168.1.100/public -u sambauser # 挂载samba共享 sudo mkdir -p /mnt/samba-public sudo mount -t cifs //192.168.1.100/public /mnt/samba-public -o username=sambauser,password=yourpassword # 或使用凭证文件 echo "username=sambauser" > ~/.smbcredentials echo "password=yourpassword" >> ~/.smbcredentials chmod 600 ~/.smbcredentials sudo mount -t cifs //192.168.1.100/public /mnt/samba-public -o credentials=/home/user/.smbcredentials
配置自动挂载:
# 编辑fstab文件 sudo vim /etc/fstab # 添加以下行: //192.168.1.100/public /mnt/samba-public cifs credentials=/home/user/.smbcredentials,uid=1000,gid=1000,file_mode=0644,dir_mode=0755 0 0
3.3 samba高级功能
用户和权限管理:
# 查看samba用户 sudo pdbedit -l # 添加新用户 sudo useradd -m -s /sbin/nologin newsambauser sudo smbpasswd -a newsambauser # 禁用用户 sudo smbpasswd -d newsambauser # 删除用户 sudo smbpasswd -x newsambauser
日志和调试:
# 查看samba日志 sudo tail -f /var/log/samba/log.smbd # 测试配置文件 testparm # 查看网络浏览 sudo nmblookup -s workgroup
四、cifs协议使用
4.1 cifs挂载windows共享
挂载windows共享:
# 安装cifs-utils sudo apt install cifs-utils # ubuntu/debian sudo yum install cifs-utils # centos/rhel # 创建挂载点 sudo mkdir -p /mnt/windows-share # 挂载windows共享 sudo mount -t cifs //windows-pc/share /mnt/windows-share -o username=windowsuser,password=winpass,domain=workgroup # 使用ip地址挂载 sudo mount -t cifs //192.168.1.50/data /mnt/windows-share -o username=user,password=pass,uid=1000,gid=1000
高级挂载选项:
# 使用多种选项挂载 sudo mount -t cifs //192.168.1.50/share /mnt/windows-share \ -o username=user,password=pass,uid=1000,gid=1000,file_mode=0644,dir_mode=0755,iocharset=utf8,noperm # 持久化挂载 sudo vim /etc/fstab //192.168.1.50/share /mnt/windows-share cifs credentials=/root/.windows-credentials,uid=1000,gid=1000,file_mode=0644,dir_mode=0755 0 0
4.2 cifs性能优化
# 性能优化挂载选项 sudo mount -t cifs //server/share /mnt/cifs-share \ -o username=user,password=pass,rsize=65536,wsize=65536,cache=strict,actimeo=120
五、实战案例与故障排除
5.1 企业级文件共享方案
多用户samba配置:
# 创建部门共享
[dept-it]
comment = it department share
path = /srv/samba/dept-it
valid users = @it-group
admin users = @it-admins
read list = @it-group
write list = @it-admins
browseable = yes
writable = yes
create mask = 0770
directory mask = 0770
[dept-hr]
comment = hr department share
path = /srv/samba/dept-hr
valid users = @hr-group
read list = @hr-group
write list = @hr-managers
browseable = yes
writable = yes
create mask = 0660
directory mask = 0770
5.2 常见故障排除
连接测试:
# 测试网络连通性 ping 192.168.1.100 # 测试端口连通性 telnet 192.168.1.100 445 # samba telnet 192.168.1.100 139 # netbios telnet 192.168.1.100 2049 # nfs # 检查防火墙状态 sudo ufw status # ubuntu sudo firewall-cmd --list-all # centos # nfs诊断 showmount -e 192.168.1.100 rpcinfo -p 192.168.1.100
权限问题解决:
# 检查文件权限 ls -la /srv/samba/public # 检查selinux状态 getenforce sestatus # 临时禁用selinux进行测试 sudo setenforce 0 # 设置selinux上下文 sudo chcon -t samba_share_t /srv/samba/public
5.3 监控和维护
监控共享使用情况:
# 查看当前连接 smbstatus # 查看nfs连接 showmount -a 192.168.1.100 # 监控性能 nfsstat smbstatus -s
备份配置文件:
# 备份samba配置 sudo tar -czf samba-backup-$(date +%y%m%d).tar.gz /etc/samba /var/lib/samba # 备份nfs配置 sudo tar -czf nfs-backup-$(date +%y%m%d).tar.gz /etc/exports /etc/default/nfs-*
六、安全最佳实践
6.1 网络安全配置
防火墙设置:
# ubuntu ufw sudo ufw allow from 192.168.1.0/24 to any port 445 sudo ufw allow from 192.168.1.0/24 to any port 139 sudo ufw allow from 192.168.1.0/24 to any port 2049 # centos firewall sudo firewall-cmd --permanent --add-service=samba 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
6.2 访问控制
限制访问范围:
# nfs访问控制 /srv/nfs/confidential 192.168.1.50(rw,sync,no_root_squash) 192.168.1.51(rw,sync,no_root_squash) # samba主机限制 hosts allow = 192.168.1. 127. hosts deny = 0.0.0.0/0
总结
通过本文的学习,您应该已经掌握了在linux环境中配置和使用nfs、samba和cifs文件共享服务的完整技能。从基础的共享配置到高级的性能优化和安全设置,这些知识将帮助您在企业或家庭网络中建立可靠高效的文件共享解决方案。
以上就是linux文件共享与存储:nfs、samba与cifs的使用方法的详细内容,更多关于linux配置和使用nfs、samba和cifs的资料请关注代码网其它相关文章!
发表评论