凌峰创科服务平台

Ubuntu如何快速搭建Samba服务器?

Samba 服务器搭建全攻略

第一步:更新系统并安装 Samba

确保你的 Ubuntu 系统是最新的,然后安装 Samba 软件包。

Ubuntu如何快速搭建Samba服务器?-图1
(图片来源网络,侵删)
  1. 更新软件包列表和已安装的包

    sudo apt update
    sudo apt upgrade -y
  2. 安装 Samba

    sudo apt install samba -y

安装完成后,Samba 服务会自动启动,你可以检查其状态:

sudo systemctl status smbd

如果看到绿色的 active (running) 字样,说明服务正在运行。

Ubuntu如何快速搭建Samba服务器?-图2
(图片来源网络,侵删)

第二步:创建共享目录

我们需要一个目录来存放要共享的文件,这里我们创建一个名为 shared 的目录,并将其放在 /home 下,为了方便管理,我们假设你将以普通用户身份进行共享。

  1. 创建共享目录

    sudo mkdir -p /home/ubuntu/shared 
    • sudo:需要管理员权限。
    • -p:确保父目录存在(如果不存在则创建)。
    • /home/ubuntu/shared:将 ubuntu 替换为你的实际用户名。
  2. 设置目录所有者 为了让当前用户(ubuntu)能够对这个目录有完全的控制权,我们需要将目录的所有权分配给它。

    sudo chown -R ubuntu:ubuntu /home/ubuntu/shared
    • -R:递归地更改目录及其内部所有文件和子目录的所有者。
    • ubuntu:ubuntu:将用户和用户组都设置为 ubuntu,请根据你的实际用户名修改。
  3. 设置目录权限 给予该目录合适的读写执行权限。

    Ubuntu如何快速搭建Samba服务器?-图3
    (图片来源网络,侵删)
    sudo chmod -R 770 /home/ubuntu/shared
    • 770:表示所有者(ubuntu)和所属组(ubuntu)拥有读、写、执行权限,而其他用户没有任何权限,这是一种安全的设置。

第三步:配置 Samba

这是最关键的一步,我们需要编辑 Samba 的主配置文件 /etc/samba/smb.conf

  1. 打开配置文件 使用你喜欢的文本编辑器,nano

    sudo nano /etc/samba/smb.conf
  2. 备份并清空(推荐) 为了避免配置错误导致服务器无法启动,一个最佳实践是先将原始配置文件备份,然后清空,再添加我们自己的配置。

    # 备份原始文件
    sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
    # 清空配置文件
    sudo > /etc/samba/smb.conf
  3. 添加共享配置 在清空的 smb.conf 文件中,添加以下内容,这会设置一个基本的 [global] 配置和一个名为 [shared] 的共享。

    #======================= Global Settings =======================
    [global]
        # 工作组或域名称,决定了在 Windows 网络中显示的工作组
        workgroup = WORKGROUP
        # 服务描述,会在网络邻居中显示
        server string = %h Samba Server
        # 设置为 yes,允许客户端浏览此服务器
        netbios name = UBUNTU-SERVER
        # 允许的客户端,设置为 ALL 允许所有
        hosts allow = 192.168.1.0/24 10.0.0.0/8 172.16.0.0/12
        # 禁用打印机共享
        printcap name = /dev/null
        disable spoolss = Yes
        # 日志文件位置和级别
        log file = /var/log/samba/log.%m
        max log size = 50
        # 安全级别设置为 user,表示需要用户名和密码才能访问
        security = user
        # guest 账户设置
        guest account = nobody
        # 是否允许创建带有可执行位的文件
        map to guest = bad user
    #======================= Share Definitions =======================
    [shared]
        # 共享的注释,会在网络邻居中显示
        comment = Ubuntu Shared Folder
        # 共享的路径
        path = /home/ubuntu/shared
        # 是否允许 guest 访问
        guest ok = no
        # 是否允许写入
        writable = yes
        # 新创建的文件和目录的权限掩码
        create mask = 0770
        # 新创建的目录的权限掩码
        directory mask = 0770
        # 设置共享目录的浏览属性
        browsable = yes
        # 强制将文件所有者设置为连接的用户
        force user = ubuntu
        # 强制将文件所属组设置为连接的用户组
        force group = ubuntu

    配置说明:

    • [global]:全局设置,影响整个 Samba 服务器。
    • workgroup:请确保你的 Windows 或 macOS 电脑的工作组/域与此设置一致,否则可能无法在网络邻居中看到。
    • hosts allow非常重要! 这里指定了哪些 IP 地址段的客户端可以访问你的 Samba 服务器。168.1.0/24 表示允许 168.1.x 网段的所有 IP,请根据你自己的局域网 IP 段进行修改。
    • security = user:这是最常用的安全级别,要求每个用户都必须提供有效的用户名和密码。
    • [shared]:这是我们定义的共享文件夹的名称,你在 Windows 网络邻居中看到的名称就是它。
    • path:共享文件夹的绝对路径。
    • writable = yes:允许写入。
    • force user = ubuntu:所有通过此共享创建的文件,其所有者都会被强制设置为 ubuntu 用户,这可以避免权限问题。
  4. 保存并退出nano 中,按 Ctrl + X,然后按 Y,最后按 Enter


第四步:为 Samba 创建系统用户

Samba 有自己的一套用户认证系统,它不直接使用 Linux 系统的用户密码,你需要为你想访问共享的 Linux 用户设置一个 Samba 密码。

  1. 设置 Samba 密码 假设你想让 ubuntu 这个用户能访问,那么执行以下命令:

    sudo smbpasswd -a ubuntu

    系统会提示你输入并确认一个新密码。这个密码是独立的,可以和你的 Linux 登录密码不同。

  2. (可选)创建专用 Samba 用户 如果你想创建一个只用于 Samba 访问、不能登录系统的用户,可以这样做:

    # 1. 创建一个不能登录的 Linux 用户
    sudo useradd -M -s /usr/sbin/nologin samba_user
    # 2. 为该用户设置 Samba 密码
    sudo smbpasswd -a samba_user

第五步:重启 Samba 服务并启用防火墙

  1. 重启 Samba 服务 让新的配置生效。

    sudo systemctl restart smbd nmbd
    • smbd:处理文件和打印服务的守护进程。
    • nmbd:负责 NetBIOS 名称解析和网络浏览的守护进程。
  2. 启用 UFW 防火墙 Ubuntu 默认使用 ufw 防火墙,Samba 需要特定的端口才能通过防火墙。

    # 允许 Samba 相关的端口
    sudo ufw allow samba
    # 启用防火墙(如果未启用)
    sudo ufw enable

    在启用时输入 y 确认。


第六步:从客户端连接

你的 Samba 服务器已经配置完成!你可以从其他设备访问它了。

在 Windows 上访问

  1. 打开文件资源管理器。
  2. 在地址栏中输入 \\<你的Ubuntu服务器IP地址>,然后按回车。
    • \\192.168.1.100
  3. 系统会弹出身份验证窗口。
  4. 输入你之前创建的 Samba 用户名(ubuntu)和密码。
  5. 登录成功后,你就可以看到名为 shared 的共享文件夹了,像操作本地磁盘一样使用它。

在 macOS 上访问

  1. 打开“访达”(Finder)。
  2. 点击菜单栏的“前往” -> “连接服务器”。
  3. 在服务器地址栏中输入 smb://<你的Ubuntu服务器IP地址>,然后点击“连接”。
  4. 输入你的 Samba 用户名和密码。
  5. 连接成功后,共享文件夹会作为一个卷挂载在访达的侧边栏中。

在 Linux 上访问

  1. 安装文件管理器(如 Nautilus, Dolphin 等),它们通常内置了 Samba 支持。
  2. 在地址栏输入 smb://<你的Ubuntu服务器IP地址/shared>
  3. 输入用户名和密码即可访问。

排错与常见问题

  1. 问题:看不到服务器或共享文件夹。

    • 检查网络:确保你的客户端和 Ubuntu 服务器在同一个局域网内,并且可以 ping 通对方。
    • 检查防火墙:确认 ufw allow samba 已经执行,或者临时关闭防火墙 sudo ufw disable 进行测试。
    • 检查 hosts allow:确认你的客户端 IP 在 smb.confhosts allow 列表中。
    • 检查工作组:确保 Windows 和 Samba 的 workgroup 设置一致。
  2. 问题:提示“登录失败:未知的用户名或错误密码”。

    • 检查用户名和密码:确保输入的是 Samba 用户名和密码,而不是 Linux 系统密码。
    • 检查 Samba 用户:确认该用户已通过 smbpasswd -a 命令添加。
    • 检查共享配置:确保 [shared] 共享中的 guest ok = no
  3. 问题:可以读取文件,但无法写入或创建文件。

    • 检查目录权限:确认共享目录的 Linux 权限是 770,并且你所属的用户组对目录有写入权限。
    • 检查 force userforce group:这些设置可能会影响文件的所有权,确保它们指向了正确的用户和组。
    • 检查 SELinux:如果你的 Ubuntu 系统启用了 SELinux(通常默认不启用),它可能会阻止写入,可以临时禁用它进行测试:sudo setenforce 0
  4. 问题:如何删除 Samba 用户? 使用以下命令:

    sudo smbpasswd -x <用户名>

至此,你已经成功在 Ubuntu 上搭建好了一个功能完善的 Samba 文件共享服务器!

分享:
扫描分享到社交APP
上一篇
下一篇