阅读提示:本文以 Ubuntu 22.04 为例,共享目录名统一使用 sambashare。文中所有 <username> 均表示占位信息,实际部署时请替换为你的 Ubuntu 系统账户名。部署时务必保证以下三处保持一致:smb.conf 配置中的 valid users、执行 smbpasswd -a 添加的账户,以及共享目录的属主。三者不一致时,Windows 访问共享往往会提示“没有权限”或无法登录。
一、Samba 是什么
Samba 是一个在 Linux 和 Unix 系统上实现 SMB/CIFS 协议的开源软件,能够在局域网内让 Ubuntu、Windows、macOS 等不同操作系统互相共享文件和打印机。本文的目标是:在 Ubuntu 上部署一个共享目录,并从同一局域网内的 Windows 电脑访问该目录。
二、安装 Samba
先更新软件源,这一步可以根据网络环境省略:
sudo apt update
安装 Samba:
sudo apt install samba
安装完成后,可以通过以下命令检查 Samba 是否安装成功:
whereis samba
如果命令返回类似如下路径,说明安装成功:
samba: /usr/sbin/samba /usr/lib/samba /etc/samba /usr/share/samba /usr/share/man/man7/samba.7.gz /usr/share/man/man8/samba.8.gz
三、创建共享目录并设置权限
创建需要共享的目录,这里示例目录为 /home/<username>/sambashare:
sudo mkdir -p /home/<username>/sambashare
将目录属主改为你的 Ubuntu 系统账户:
sudo chown <username>:<username> /home/<username>/sambashare
设置目录权限,便于局域网访问时正常读写:
sudo chmod 0777 /home/<username>/sambashare
说明:共享目录的属主如果不是你配置的 Samba 账户,即使创建了目录也可能出现无法访问的情况。所以在配置之前先把属主和权限设置正确,可以避免大多数后续权限错误。
四、配置 Samba 共享
Samba 的配置文件位于 /etc/samba/smb.conf。使用以下任一命令进行编辑:
sudo nano /etc/samba/smb.conf
也可以使用 vim:
sudo vim /etc/samba/smb.conf
在配置文件底部追加以下内容,把 path 和 valid users 改成你的实际路径和账户名:
[sambashare]
comment = Samba on Ubuntu
path = /home/<username>/sambashare
read only = no
browsable = yes
available = yes
guest ok = no
writable = yes
valid users = <username>
create mask = 0777
directory mask = 0777
保存配置文件后,重启 Samba 服务使配置生效:
sudo service smbd restart
五、设置 Samba 账户密码
Samba 不使用 Linux 系统账户的登录密码,需要为该账户单独设置 Samba 密码。这个密码也是 Windows 端访问共享时输入的密码:
sudo smbpasswd -a <username>
执行后按提示输入两次密码,输出类似如下内容:
New SMB password:
Retype new SMB password:
Added user <username>.
注意:这里的账户名必须属于 Ubuntu 系统账户,且要和上一步配置文件中的 valid users 保持一致。如果对应不上,Windows 访问时会提示账号或密码错误。

六、配置防火墙
Ubuntu 开启了 UFW 防火墙时,需要放行 Samba 流量:
sudo ufw allow samba
如果未开启防火墙,可以跳过这一步。
七、获取服务器 IP 并在 Windows 上访问
在 Ubuntu 终端执行以下任一命令查看本机 IP:
ifconfig
如果系统没有安装 ifconfig,可以使用:
ip addr
在输出中找到类似 inet 192.168.16.91 的地址,这就是后续在 Windows 中要访问的服务器 IP。


进入同一局域网内的 Windows 电脑,按 Win + R 打开运行窗口,输入共享地址并回车:
\\192.168.16.91\sambashare
把 IP 地址替换为你的 Ubuntu 服务器 IP,把 sambashare 替换为你配置文件中的共享名。随后输入刚刚用 smbpasswd 设置的账户名和密码,即可访问共享目录。


八、常见问题排查
8.1 Ubuntu 22.04 安装 Samba 时出现依赖冲突
在部分 Ubuntu 22.04 环境中执行 sudo apt install samba 时,可能因版本库中 samba-libs、libwbclient0 等包的版本高于 Samba 所需版本而安装失败。错误信息通常包含类似以下内容:
samba : 依赖: samba-common-bin (= 2:4.15.13+dfsg-0ubuntu1.5) 但是它将不会被安装
依赖: libwbclient0 (= 2:4.15.13+dfsg-0ubuntu1.5) 但是 2:4.15.13+dfsg-0ubuntu1.6 正要被安装
依赖: samba-libs (= 2:4.15.13+dfsg-0ubuntu1.5) 但是 2:4.15.13+dfsg-0ubuntu1.6 正要被安装
解决办法是把相关依赖降级到 Samba 所需的版本,再重新安装。先更新软件源:
sudo apt update
执行降级:
sudo apt install --allow-downgrades samba-libs=2:4.15.13+dfsg-0ubuntu1.5 libwbclient0=2:4.15.13+dfsg-0ubuntu1.5
然后再次安装 Samba:
sudo apt install samba
一般完成后即可解决问题。
8.2 共享目录无法访问:目录属主或权限不正确
如果 Samba 服务已启动、账号密码也正确,但 Windows 仍然无法访问共享目录,可以回到 Ubuntu 检查目录的属主和权限。
查看共享目录信息:
ls -ld /home/share
如果返回类似下面的结果,说明目录属主还是 root,并且没有任何用户权限:
d--------- 2 root root 4096 2月 13 19:24 /home/share
此时需要把目录属主改为你的系统账户,并设置可读写权限:
sudo chown <username>:<username> /home/share
sudo chmod 0777 /home/share
修改后再执行 ls -ld /home/share,如果显示类似 drwxrwxrwx、属主为你的账户名,即可回到 Windows 重新访问。
8.3 Windows 11 提示安全策略阻止来宾访问
在部分 Windows 11 系统上访问共享时会提示:
“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问。这些策略可帮助保护你的电脑免受网络上不安全设备或恶意设备的威胁。”

解决办法如下:
- 按
Win + R,输入gpedit.msc,回车打开组策略编辑器。 - 依次展开:计算机配置 - 管理模块 - 网络 - Lanman 工作站。
- 双击“启用不安全的来宾登录”,将其设置为“已启用”。

配置完成后再次尝试访问共享目录:

8.4 Windows 提示不允许一个用户使用多个用户名连接
如果在 Windows 上访问共享时出现“不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接”,通常是因为 Windows 中残留了旧的网络连接凭据。解决办法如下:
- 在 Windows 中按
Win + R,输入cmd并回车,打开命令提示符。 - 输入
net use,查看当前已建立的网络连接,找到指向目标服务器 IP 的记录。 - 执行
net use * /delete清除全部缓存连接;如果只想删除某一条,可以执行net use \\192.168.16.162\jfubuntu /delete。 - 再次执行
net use,确认连接列表已清空。 - 重新访问共享地址,系统会弹出登录窗口,输入新账户和密码即可。
- 如果仍然失败,可以重启 Windows 电脑,以彻底清除系统缓存后再试。
九、参考文档
详细官方教程可参考:Install and Configure Samba | Ubuntu
717

被折叠的 条评论
为什么被折叠?



