设备环境:物理机、局域网、系统 0.9.30
BUG现象:Linux 下无法列出 Samba 共享文件夹
出现频率:必现
飞牛的 Samba 协议在 Windows 下使用良好,但在 Linux 或某些 Android 系统上,无法正常授权。
我的环境:
Debian 13, Kde Plasma 6.3.6
问题:
在 Dolphin 中输入飞牛 Nas 的 samba 地址后,无法正常弹出登录对话框,通过 kio 日志发现,KDE 在
登录时,使用了当前 Linux 登录的用户名访问 IPC 管道,而飞牛的 Samba 设置是可以允许 IPC 匿名访问的。
因此 KIO 认为认证成功,就列出 IPC$ 管道下的文件(实际上是空的)。
KIO 日志如下:
kf.kio.workers.smb: auth_initialize_smbc
kf.kio.workers.smb: Setting debug level to: 0
kf.kio.workers.smb: Using libsmbclient library version QVersionNumber(4.22.4)
kf.kio.workers.smb: QUrl("smb://192.168.12.8/")
kf.kio.workers.smb: checkURL QUrl("smb://192.168.12.8/")
kf.kio.workers.smb: checkURL return3 QUrl("smb://192.168.12.8/")
kf.kio.workers.smb: updateCache "/"
kf.kio.workers.smb: Starting discovery.
kf.kio.workers.smb: auth_smbc_get_dat: set user= guest , workgroup= WORKGROUP server= 192.168.12.8 , share= IPC$
kf.kio.workers.smb: updateCache "/IPC$"
kf.kio.workers.smb: libsmb-auth-callback URL: QUrl("smb://192.168.12.8/IPC$")
kf.kio.workers.smb: auth_smbc_get_dat: set user= guest , workgroup= WORKGROUP server= 192.168.12.8 , share= IPC$
kf.kio.workers.smb: updateCache "/IPC$"
kf.kio.workers.smb: libsmb-auth-callback URL: QUrl("smb://192.168.12.8/IPC$")
kf.kio.workers.smb: open "smb://192.168.12.8/" url-type: 2 dirfd: 10000 errNum: 0
kf.kio.workers.smb: smbc_readdir
kf.kio.workers.smb: dirent name: "IPC$" comment: "IPC Service (Lenovo-X1 server (Samba TRIM))" type: 6
kf.kio.workers.smb: SMBC_UNKNOWN : "IPC$"
kf.kio.workers.smb: smbc_readdir
kf.kio.workers.smb: done with smbc
kf.kio.workers.smb: Discovery finished.
kf.kio.workers.smb: QUrl("smb://192.168.12.8/")
kf.kio.workers.smb: checkURL QUrl("smb://192.168.12.8/")
kf.kio.workers.smb: checkURL return3 QUrl("smb://192.168.12.8/")
kf.kio.workers.smb: updateCache "/"
修改方法:
修改飞牛 Samba 的配置文件 /etc/samba/smb.conf
在 global 段添加两行配置:
[global]
map to guest = never
restrict anonymous = 2
map to guest = never 表示任何情况下都不允许匿名或 guest 登录。必须提供有效用户名密码。
restrict anonymous = 2 参数控制 匿名用户(即 guest)能访问的程度。
| 值 |
含义 |
说明 |
0 |
允许匿名用户访问部分信息(默认) |
比如列出共享列表 |
1 |
禁止匿名用户列出用户/组信息 |
更严格一些 |
2 |
完全禁止匿名访问(包括共享列表) |
🔒 最高安全级别 |