我最近在 FreeBSD 11 系统上将 Samba 从 3.x 升级到 4.4.8。在升级过程中,我发现 已security = share
被删除并被 替换为map to guest = Bad Password
。更改后,我能够以访客身份连接到共享,但无法写入共享;客户端说权限被拒绝。
查看日志,我发现了这个错误:
[2017/01/08 20:17:59.632441, 3] ../source3/smbd/error.c:82(error_packet_set)
NT error packet at ../source3/smbd/error.c(165) cmd=162 (SMBntcreateX) NT_STATUS_ACCESS_DENIED
这里是/usr/local/etc/smb4.conf
:
[global]
workgroup = MYGROUP
server string = share
# security and map to guest were the only settings changed after upgrading
security = user
map to guest = Bad Password
guest account = share
log file = /var/log/samba4/log.%m
max log size = 50
log level = 3
dns proxy = no
[share]
path = /tank/share
public = yes
guest ok = yes
only guest = yes
writable = yes
force user = share
force group = share
printable = no
目录的所有权:
$ ls -l -d /tank /tank/share
drwxr-xr-x 10 root wheel 12 Dec 5 04:50 /tank
drwxr-xr-x 43 share share 101 Jan 3 05:04 /tank/share
我在谷歌上搜索这个问题时,问题似乎在于没有设置writable = yes
,没有执行force user
,没有设置guest account
,或者用户没有对目标目录的写权限,但这些看起来都很好。
Windows 和 Linux 客户端都会发生这种情况。
答案1
我不确定是什么修复了它,但有三处更改确实修复了它:
- 更改
map to guest
为Bad User
(如记录在基本配置文件Samba wiki 上的示例) guest account
从全局配置中删除public = yes
从共享配置中删除
[全球的] 工作组 = MYGROUP 服务器字符串 = 共享 安全 = 用户 映射到客人 =坏用户 # 来宾帐户 = 分享 日志文件 = /var/log/samba4/log.%m 最大日志大小 = 50 日志级别 = 3 dns 代理 = 无 [分享] 路径 = /tank/share # 公开 = 是 客人同意 = 可以 仅限客人 = 是 可写 = 是 强制用户=共享 强制组=共享 可打印 = 否