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 apply2.2 Samba服务安装在两台主机上分别执行sudo apt update sudo apt install samba -y验证安装whereis smbd # 应返回/usr/sbin/smbd samba -V # 显示版本号如4.13.173. 服务端配置详解3.1 创建共享目录建议使用独立分区或大容量存储设备sudo mkdir -p /srv/samba/share sudo chown -R nobody:nogroup /srv/samba/share sudo chmod -R 0775 /srv/samba/share关键参数说明nobody:nogroupSamba默认使用的低权限账户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 nobody3.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 username4.2 永久挂载配置创建挂载点sudo mkdir -p /mnt/samba_share编辑/etc/fstab//192.168.1.100/share /mnt/samba_share cifs credentials/etc/samba/credentials,uid1000,gid1000,file_mode0775,dir_mode0775 0 0创建凭证文件sudo nano /etc/samba/credentials内容格式usernameyour_username passwordyour_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_RCVBUF65536 SO_SNDBUF65536 min receivefile size 16384 write cache size 524288 getwd cache yes5.2 多用户权限控制按组设置权限[department] path /srv/samba/dept valid users dept_group writable yes create mask 0770 directory mask 07706. 故障排查指南6.1 连接问题排查流程基础网络检查ping 192.168.1.100 nmap -p 445 192.168.1.100Samba服务状态sudo systemctl status smbd journalctl -u smbd -f防火墙配置sudo ufw allow samba sudo ufw status numbered6.2 常见错误解决方案错误1NT_STATUS_ACCESS_DENIED检查selinux状态getenforce验证目录权限ls -ld /srv/samba/share确认smbpasswd已设置错误2NT_STATUS_HOST_UNREACHABLE确认IP配置正确检查交换机/路由器端口状态测试其他协议如HTTP是否可达7. 安全加固建议禁用SMB1协议在[global]段添加server min protocol SMB2 client min protocol SMB2启用加密传输smb encrypt required限制访问IPhosts allow 192.168.1. 127.0.0.1定期更新sudo apt update sudo apt upgrade samba -y8. 实际应用场景扩展8.1 开发环境同步配置IDE直接访问远程目录VS Code安装Remote - SSH扩展映射网络驱动器到开发机实时编辑保存测试8.2 备份方案集成结合rsync实现定时备份rsync -avz --delete /mnt/samba_share/ /backup/samba_$(date %F)添加到cronjobcrontab -e # 每天3点执行 0 3 * * * /usr/bin/rsync -avz --delete /mnt/samba_share/ /backup/samba_$(date \%F)9. 维护与管理技巧日志分析工具sudo tail -f /var/log/samba/log.smbd连接监控sudo smbstatus配置语法检查testparm性能测试dd if/dev/zero of/mnt/samba_share/testfile bs1M count1024