Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux配置和使用NFS、Samba和CIFS

Linux文件共享与存储:NFS、Samba与CIFS的使用方法

作者:鸽芷咕

这篇文章主要介绍了在Linux环境中配置和使用NFS、Samba和CIFS文件共享服务的完整技能,从基础的共享配置到高级的性能优化和安全设置的相关资料,需要的朋友可以参考下

一、Linux文件共享概述

1.1 文件共享的重要性

在现代计算环境中,文件共享是实现多台计算机之间数据交换和协作的基础。无论是企业内部的文档共享、开发团队间的代码协作,还是家庭网络中的媒体文件访问,都需要高效可靠的文件共享解决方案。

主要文件共享协议对比:

协议适用场景优势劣势
NFSLinux/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配置参数说明:

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的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文