我的 smb.conf 有什么问题?为什么 Windows 无法访问共享?

我的 smb.conf 有什么问题?为什么 Windows 无法访问共享?

我正在尝试使用 Samba 在 Windows XP 和 Ubuntu 之间共享文件。

我编辑了 smb.conf,添加了工作组名称和 netbios 名称。这是有问题的部分:

[Myshare]
    comment = Myshare
    path = /myshare
    read only = no
    guest ok = yes

当我这样做时,sudo samba restart我得到以下输出:

Unknown parameter encountered: "max log size"
Ignoring unknown parameter "max log size"
Unknown parameter encountered: "syslog"
Ignoring unknown parameter "syslog"
Unknown parameter encountered: "passdb backend"
Ignoring unknown parameter "passdb backend"
Unknown parameter encountered: "unix password sync"
Ignoring unknown parameter "unix password sync"
Unknown parameter encountered: "passwd program"
Ignoring unknown parameter "passwd program"
Unknown parameter encountered: "pam password change"
Ignoring unknown parameter "pam password change"
Unknown parameter encountered: "map to guest"
Ignoring unknown parameter "map to guest"
Unknown parameter encountered: "usershare allow guests"
Ignoring unknown parameter "usershare allow guests"
Unknown parameter encountered: "read_only"
Ignoring unknown parameter "read_only"
Unknown parameter encountered: "guest_ok"
Ignoring unknown parameter "guest_ok"
Unknown parameter encountered: "guest ok"
Ignoring unknown parameter "guest ok"
Unknown parameter encountered: "guest ok"
Ignoring unknown parameter "guest ok"

从我的 Windows XP 机器上,我可以看到共享,但当我尝试访问它时,它说它不可用,我可能没有权限使用它。我已经更改了目录的权限。

当我安装 samba 时,我sudo apt-get install samba4认为这些问题可能是因为我正在使用较新版本的 samba 并且它无法识别 smb.conf 文件中的旧语法。

当我尝试运行 smbpasswd 时,它显示 cli_pipe_validate_current_pdu:从主机 127.0.0.1 收到 RPC 故障代码 DCERPC_FAULT_OP_RNG_ERROR!机器 127.0.0.1 拒绝密码更改:错误为:NT 代码 0x1c010002。

答案1

这真的很有趣。我对我的 Samba34 使用了很多相同的配置选项。

话虽如此,点击man 5 smb.conf- 这将列出您可以使用的所有可接受子句。另外,不要忘记确保每件事都在正确的部分中。例如,不要server string = UBUNTU在 [Myshare] 下。按照惯例,每个部分都应以小写字母开头。我希望 Samba 更强大一些,但也许它没有被识别为共享?

此外,我不相信read_onlyguest_ok是有效条目。其余的都是有效的,因此很可能不会被识别为适用于任何共享;它们处于松散状态,因此被忽略。

从简单的配置开始,然后慢慢地逐步完善。注释掉带有的行,#然后重新添加,直到找出问题所在。我认为[Myshare]问题不在于此;我认为您[global]在不同的共享下使用了 -only 字段或类似的东西。手册页应该解释每个字段的用途。

答案2

如果 WinXP 能够连接到共享但顶级目录本身不允许读取,它就会有这样的行为。最好再检查一下权限是否正确。您可以在 XPsmbstatus计算机连接到共享时运行,以验证 samba 服务器是否看到正确的用户。然后验证指定的用户名是否可以读取共享的目录。

答案3

这并不是最安全的方法,但你可以尝试以下方法。然后,一旦你成功了,就用更严格的安全措施锁定它:

security = share 
guest account = publicuser
passdb backend = tdbsam

然后

[publicuser]
comment = publicuser Home Dir
path = /home/publicuser
public = yes
writable = yes
write list = +publicuser
browseable = yes
hosts allow = 192.168.10.10

并且,在 /etc/smbusers

# Unix_name = SMB_name1 SMB_name2 ...
# root = 
publicuser = Administrator smbguest pcguest guest
# nobody = guest pcguest smbguest

答案4

我知道这个帖子很久以前就被埋没了,但是当我遇到与 OP 几乎相同的问题时,Google 就把它提出了来 - 我的日志文件看起来非常相似。

对我来说,问题在于 smb.conf 中的行尾。

不知何故(当我说不知何故时,我真正的意思是 - 由于打字不规范)我有很多行末尾都有空格,它们都被忽略了 = 当我使用 testparm 命令时没有显示出来 - 可能是在从 github 复制它们时出现了一些问题。清理了这些空格后,配置就正常工作了!

相关内容