Samba 服务器搭建全攻略
第一步:更新系统并安装 Samba
确保你的 Ubuntu 系统是最新的,然后安装 Samba 软件包。

-
更新软件包列表和已安装的包
sudo apt update sudo apt upgrade -y
-
安装 Samba
sudo apt install samba -y
安装完成后,Samba 服务会自动启动,你可以检查其状态:
sudo systemctl status smbd
如果看到绿色的 active (running) 字样,说明服务正在运行。

第二步:创建共享目录
我们需要一个目录来存放要共享的文件,这里我们创建一个名为 shared 的目录,并将其放在 /home 下,为了方便管理,我们假设你将以普通用户身份进行共享。
-
创建共享目录
sudo mkdir -p /home/ubuntu/shared
sudo:需要管理员权限。-p:确保父目录存在(如果不存在则创建)。/home/ubuntu/shared:将ubuntu替换为你的实际用户名。
-
设置目录所有者 为了让当前用户(
ubuntu)能够对这个目录有完全的控制权,我们需要将目录的所有权分配给它。sudo chown -R ubuntu:ubuntu /home/ubuntu/shared
-R:递归地更改目录及其内部所有文件和子目录的所有者。ubuntu:ubuntu:将用户和用户组都设置为ubuntu,请根据你的实际用户名修改。
-
设置目录权限 给予该目录合适的读写执行权限。
(图片来源网络,侵删)sudo chmod -R 770 /home/ubuntu/shared
770:表示所有者(ubuntu)和所属组(ubuntu)拥有读、写、执行权限,而其他用户没有任何权限,这是一种安全的设置。
第三步:配置 Samba
这是最关键的一步,我们需要编辑 Samba 的主配置文件 /etc/samba/smb.conf。
-
打开配置文件 使用你喜欢的文本编辑器,
nano:sudo nano /etc/samba/smb.conf
-
备份并清空(推荐) 为了避免配置错误导致服务器无法启动,一个最佳实践是先将原始配置文件备份,然后清空,再添加我们自己的配置。
# 备份原始文件 sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak # 清空配置文件 sudo > /etc/samba/smb.conf
-
添加共享配置 在清空的
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用户,这可以避免权限问题。
-
保存并退出 在
nano中,按Ctrl + X,然后按Y,最后按Enter。
第四步:为 Samba 创建系统用户
Samba 有自己的一套用户认证系统,它不直接使用 Linux 系统的用户密码,你需要为你想访问共享的 Linux 用户设置一个 Samba 密码。
-
设置 Samba 密码 假设你想让
ubuntu这个用户能访问,那么执行以下命令:sudo smbpasswd -a ubuntu
系统会提示你输入并确认一个新密码。这个密码是独立的,可以和你的 Linux 登录密码不同。
-
(可选)创建专用 Samba 用户 如果你想创建一个只用于 Samba 访问、不能登录系统的用户,可以这样做:
# 1. 创建一个不能登录的 Linux 用户 sudo useradd -M -s /usr/sbin/nologin samba_user # 2. 为该用户设置 Samba 密码 sudo smbpasswd -a samba_user
第五步:重启 Samba 服务并启用防火墙
-
重启 Samba 服务 让新的配置生效。
sudo systemctl restart smbd nmbd
smbd:处理文件和打印服务的守护进程。nmbd:负责 NetBIOS 名称解析和网络浏览的守护进程。
-
启用 UFW 防火墙 Ubuntu 默认使用
ufw防火墙,Samba 需要特定的端口才能通过防火墙。# 允许 Samba 相关的端口 sudo ufw allow samba # 启用防火墙(如果未启用) sudo ufw enable
在启用时输入
y确认。
第六步:从客户端连接
你的 Samba 服务器已经配置完成!你可以从其他设备访问它了。
在 Windows 上访问
- 打开文件资源管理器。
- 在地址栏中输入
\\<你的Ubuntu服务器IP地址>,然后按回车。\\192.168.1.100
- 系统会弹出身份验证窗口。
- 输入你之前创建的 Samba 用户名(
ubuntu)和密码。 - 登录成功后,你就可以看到名为
shared的共享文件夹了,像操作本地磁盘一样使用它。
在 macOS 上访问
- 打开“访达”(Finder)。
- 点击菜单栏的“前往” -> “连接服务器”。
- 在服务器地址栏中输入
smb://<你的Ubuntu服务器IP地址>,然后点击“连接”。 - 输入你的 Samba 用户名和密码。
- 连接成功后,共享文件夹会作为一个卷挂载在访达的侧边栏中。
在 Linux 上访问
- 安装文件管理器(如 Nautilus, Dolphin 等),它们通常内置了 Samba 支持。
- 在地址栏输入
smb://<你的Ubuntu服务器IP地址/shared>。 - 输入用户名和密码即可访问。
排错与常见问题
-
问题:看不到服务器或共享文件夹。
- 检查网络:确保你的客户端和 Ubuntu 服务器在同一个局域网内,并且可以
ping通对方。 - 检查防火墙:确认
ufw allow samba已经执行,或者临时关闭防火墙sudo ufw disable进行测试。 - 检查
hosts allow:确认你的客户端 IP 在smb.conf的hosts allow列表中。 - 检查工作组:确保 Windows 和 Samba 的
workgroup设置一致。
- 检查网络:确保你的客户端和 Ubuntu 服务器在同一个局域网内,并且可以
-
问题:提示“登录失败:未知的用户名或错误密码”。
- 检查用户名和密码:确保输入的是 Samba 用户名和密码,而不是 Linux 系统密码。
- 检查 Samba 用户:确认该用户已通过
smbpasswd -a命令添加。 - 检查共享配置:确保
[shared]共享中的guest ok = no。
-
问题:可以读取文件,但无法写入或创建文件。
- 检查目录权限:确认共享目录的 Linux 权限是
770,并且你所属的用户组对目录有写入权限。 - 检查
force user和force group:这些设置可能会影响文件的所有权,确保它们指向了正确的用户和组。 - 检查 SELinux:如果你的 Ubuntu 系统启用了 SELinux(通常默认不启用),它可能会阻止写入,可以临时禁用它进行测试:
sudo setenforce 0。
- 检查目录权限:确认共享目录的 Linux 权限是
-
问题:如何删除 Samba 用户? 使用以下命令:
sudo smbpasswd -x <用户名>
至此,你已经成功在 Ubuntu 上搭建好了一个功能完善的 Samba 文件共享服务器!
