Ubuntu主机间Samba文件共享配置指南
2026/7/26 4:02:29 网站建设 项目流程

1. 项目概述

两台Ubuntu主机之间的文件共享是日常开发和运维中的常见需求。相比传统的FTP或SCP方式,Samba协议提供了更接近Windows文件共享的体验,支持权限管理、断点续传等实用功能。本文将详细介绍如何在两台Ubuntu 20.04 LTS主机间建立稳定的Samba共享,包含从安装配置到排错的全流程。

实测环境:Ubuntu 20.04.4 LTS (内核5.13),适用于18.04及以上版本

2. 环境准备与安装

2.1 网络基础配置

首先确保两台主机位于同一局域网段,可以通过ip a命令查看网卡信息。建议为两台主机配置静态IP(以192.168.1.100和192.168.1.101为例):

# 编辑网络配置 sudo nano /etc/netplan/00-installer-config.yaml

配置示例:

network: ethernets: enp3s0: addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 1.1.1.1] version: 2

应用配置:

sudo netplan apply

2.2 Samba服务安装

在两台主机上分别执行:

sudo apt update sudo apt install samba -y

验证安装:

whereis smbd # 应返回/usr/sbin/smbd samba -V # 显示版本号(如4.13.17)

3. 服务端配置详解

3.1 创建共享目录

建议使用独立分区或大容量存储设备:

sudo mkdir -p /srv/samba/share sudo chown -R nobody:nogroup /srv/samba/share sudo chmod -R 0775 /srv/samba/share

关键参数说明:

  • nobody:nogroup:Samba默认使用的低权限账户
  • 0775:所有者完全权限,组用户读写执行,其他用户读执行

3.2 编辑Samba配置文件

备份原始配置:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

使用以下命令清空并重建配置:

sudo bash -c 'grep -v -E "^#|^;" /etc/samba/smb.conf.bak | grep -v "^$" > /etc/samba/smb.conf'

添加共享配置:

sudo nano /etc/samba/smb.conf

示例配置:

[global] workgroup = WORKGROUP server string = %h server (Samba, Ubuntu) log file = /var/log/samba/log.%m max log size = 1000 logging = file panic action = /usr/share/samba/panic-action %d server role = standalone server obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes map to guest = bad user usershare allow guests = yes [share] comment = Ubuntu File Share path = /srv/samba/share browsable = yes guest ok = yes read only = no create mask = 0775 directory mask = 0775 force user = nobody

3.3 用户权限管理

如需密码访问(推荐):

sudo smbpasswd -a username # 添加Samba用户 sudo pdbedit -L # 查看用户列表

4. 客户端连接配置

4.1 基础连接测试

安装客户端工具:

sudo apt install smbclient cifs-utils -y

列出共享目录:

smbclient -L //192.168.1.100 -U username

4.2 永久挂载配置

创建挂载点:

sudo mkdir -p /mnt/samba_share

编辑/etc/fstab:

//192.168.1.100/share /mnt/samba_share cifs credentials=/etc/samba/credentials,uid=1000,gid=1000,file_mode=0775,dir_mode=0775 0 0

创建凭证文件:

sudo nano /etc/samba/credentials

内容格式:

username=your_username password=your_password

设置权限:

sudo chmod 600 /etc/samba/credentials

测试挂载:

sudo mount -a df -h | grep samba # 验证挂载

5. 高级配置与优化

5.1 性能调优

在smb.conf的[global]段添加:

socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536 min receivefile size = 16384 write cache size = 524288 getwd cache = yes

5.2 多用户权限控制

按组设置权限:

[department] path = /srv/samba/dept valid users = @dept_group writable = yes create mask = 0770 directory mask = 0770

6. 故障排查指南

6.1 连接问题排查流程

  1. 基础网络检查:

    ping 192.168.1.100 nmap -p 445 192.168.1.100
  2. Samba服务状态:

    sudo systemctl status smbd journalctl -u smbd -f
  3. 防火墙配置:

    sudo ufw allow samba sudo ufw status numbered

6.2 常见错误解决方案

错误1:NT_STATUS_ACCESS_DENIED

  • 检查selinux状态:getenforce
  • 验证目录权限:ls -ld /srv/samba/share
  • 确认smbpasswd已设置

错误2:NT_STATUS_HOST_UNREACHABLE

  • 确认IP配置正确
  • 检查交换机/路由器端口状态
  • 测试其他协议(如HTTP)是否可达

7. 安全加固建议

  1. 禁用SMB1协议(在[global]段添加):

    server min protocol = SMB2 client min protocol = SMB2
  2. 启用加密传输:

    smb encrypt = required
  3. 限制访问IP:

    hosts allow = 192.168.1. 127.0.0.1
  4. 定期更新:

    sudo apt update && sudo apt upgrade samba -y

8. 实际应用场景扩展

8.1 开发环境同步

配置IDE直接访问远程目录:

  1. VS Code安装"Remote - SSH"扩展
  2. 映射网络驱动器到开发机
  3. 实时编辑保存测试

8.2 备份方案集成

结合rsync实现定时备份:

rsync -avz --delete /mnt/samba_share/ /backup/samba_$(date +%F)

添加到cronjob:

crontab -e # 每天3点执行 0 3 * * * /usr/bin/rsync -avz --delete /mnt/samba_share/ /backup/samba_$(date +\%F)

9. 维护与管理技巧

  1. 日志分析工具:

    sudo tail -f /var/log/samba/log.smbd
  2. 连接监控:

    sudo smbstatus
  3. 配置语法检查:

    testparm
  4. 性能测试:

    dd if=/dev/zero of=/mnt/samba_share/testfile bs=1M count=1024

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询