1. Samba 用户和权限问题
-
Samba 用户配置:确保 Samba 配置中已经添加了一个有效的用户,并且该用户拥有访问权限。
如果你尚未添加 Samba 用户,可以使用以下命令为
yourname
用户设置 Samba 访问权限:sudo smbpasswd -a yourname
然后输入密码。
-
文件夹权限:确保共享的文件夹
/home/yourname/_Project/oh_workspace
具有正确的权限,允许yourname
用户访问。sudo chown -R yourname:yourname /home/yourname/_Project/oh_workspace sudo chmod -R 770 /home/yourname/_Project/oh_workspace
2. Samba 配置文件检查
-
打开 Samba 的配置文件
/etc/samba/smb.conf
,确保共享部分的配置正确:[shared] comment = Share Stuff path = /home/you/_Project/oh_workspace browseable = yes valid users = yourname public = no guest ok = no writable = yes create mask = 0770 directory mask = 0770
-
valid users
:确保yourname
是有效用户,并且guest ok = no
关闭了匿名访问。 -
保存配置后,重启 Samba 服务:
sudo systemctl restart smbd
3. 清除 Windows SMB 缓存
- 有时候,Windows 会缓存之前的连接信息,导致出现权限问题。你可以通过以下命令清除 Windows 的 SMB 缓存:
- 打开“命令提示符”(以管理员身份运行)。
- 输入以下命令:
net use * /delete
- 重新尝试连接
\\192.168.1.166\shared
。
4. Windows 10 禁用匿名访问
-
Windows 10 默认禁用了匿名 SMB 访问,你需要确保 Samba 允许的用户登录访问,而不是匿名访问。
-
如果你需要匿名访问,可以通过修改 Windows 注册表启用不安全的匿名访问(不推荐,因为不安全):
打开注册表编辑器 (
regedit
),找到以下路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
找到
AllowInsecureGuestAuth
,将其值设置为1
,如果不存在则创建此键。
5. 防火墙和端口检查
- 确保 Linux 上的防火墙没有阻止 Samba 端口(通常是
445
)。 - 你可以使用以下命令查看和配置防火墙规则:
sudo ufw allow samba sudo ufw reload
6. Samba 日志检查
- 如果问题仍然存在,查看 Samba 的日志文件可以帮助诊断问题。使用以下命令查看日志:
sudo tail -f /var/log/samba/log.smbd
在日志中查找任何权限拒绝或配置错误的提示。
总结:
- 确保 Samba 用户 (
yourname
) 已正确设置,并且拥有访问文件夹的权限。 - 检查和调整 Samba 配置文件,确保共享设置正确。
- 清除 Windows 的 SMB 缓存,确保不会使用过时的凭据。
- 检查防火墙设置,确保 Samba 端口没有被阻止。
- 如果仍然无法解决,查看 Samba 日志文件获取更多调试信息。
通过这些步骤,应该能够解决 Windows 无法访问 \\192.168.1.166\shared
的问题。