什么是 Samba?

Samba 是一种免费的开源软件工具,它允许 Linux 系统和 Windows 系统之间共享文件和打印机。通过使用 Samba,Ubuntu 服务器可以作为文件共享服务器供 Windows 和其他操作系统访问。


一、安装 Samba 服务

  1. 更新系统包

    sudo apt update && sudo apt upgrade -y

  2. 安装 Samba: 使用以下命令安装 Samba:

    sudo apt install samba -y

    安装完成后,Samba 的主配置文件位于 /etc/samba/smb.conf

  3. 验证安装是否成功: 检查 Samba 服务是否运行:

    sudo systemctl status smbd
    

    如果未启动,使用以下命令启动并设置为开机自启:

    sudo systemctl start smbd 
    sudo systemctl enable smbd


二、配置 Samba

1. 创建共享文件夹

  • 创建一个共享文件夹:

    sudo mkdir -p /srv/samba/share

  • 设置共享文件夹的权限:

    sudo chown nobody:nogroup /srv/samba/share 
    sudo chmod 0777 /srv/samba/share

    上述命令将权限设置为所有用户都可以读写。

2. 编辑 Samba 配置文件

  • 打开 Samba 配置文件:

    sudo nano /etc/samba/smb.conf

  • 在文件末尾添加如下配置:

    [Share]
    comment = Shared Folder
    path = /srv/samba/share
    browseable = yes
    writable = yes
    guest ok = yes
    read only = no
    force user = nobody
    

    参数说明

    • comment:共享的描述。

    • path:共享文件夹的绝对路径。

    • browseable:是否能被浏览器发现。

    • guest ok:允许匿名访问。

  • 保存并退出文件后,重新加载 Samba 配置:

    sudo systemctl restart smbd

3. 创建用户访问共享(可选)

如果需要通过用户名密码访问:

  • 添加 Samba 用户:

    sudo smbpasswd -a <username>

  • 确保用户对共享文件夹有访问权限:

    sudo chown <username>:<group> /srv/samba/share


三、设置防火墙

如果使用 UFW(Ubuntu Firewall),需要打开 Samba 端口:

sudo ufw allow samba 
sudo ufw reload


四、客户端连接验证

  1. 在 Windows 上连接 Samba 共享

    • 打开文件管理器,输入共享地址(替换 IP 为服务器的 IP 地址):

      \\<IP>\Share

    • 按提示输入用户名和密码(如果设置了)。

  2. 在 Ubuntu 上连接共享

    • 使用 smbclient 测试:

      smbclient //IP/Share -U <username>

    • 或者挂载共享到本地文件系统:

      sudo mount -t cifs -o username=<username>,password=<password> //IP/Share /mnt


五、测试共享文件

  • 创建一个文件测试:

    echo "Hello Samba" | sudo tee /srv/samba/share/test.txt

  • 在客户端检查是否可以访问 test.txt 文件。


六、故障排查

  • 检查 Samba 配置是否有效

    testparm

  • 查看 Samba 日志: Samba 日志文件位于 /var/log/samba/,可以查看具体错误信息:

    sudo tail -f /var/log/samba/log.smbd

  • 检查网络连接: 确保服务器和客户端网络畅通。


七、结论

通过以上步骤,您可以在 Ubuntu 上成功安装和配置 Samba 服务,并实现跨平台的文件共享功能。如果需要更复杂的权限或组管理,可以进一步研究 Samba 的用户权限配置。