我刚刚在虚拟机上安装了 Debian 8 (Jessie)。我安装了 Samba 4.1.17 服务器,目的是在我的网络上共享文件夹。我没有对配置进行任何更改,只是在文件末尾添加了以下几行/etc/samba/smb.conf
:
[public]
comment = HTTPD public directory
read only = no
locking = no
path = /var/www
guest ok = no
我添加了我的用户smbpasswd
并确保用户在/var/www
目录上拥有 777 权限。
smbclient -L \\\\debian64-plankje
我可以从我的旧 Debian 7 VM 远程列出来自本地主机的共享。(debian64-plankje
是服务器的主机名)
如果我设置了,guest ok = yes
那么我就可以匿名连接到共享smbclient \\\\debian64-public\\public
,但是guest ok = no
设置后我会出现错误tree connect failed: NT_STATUS_ACCESS_DENIED
。
经过广泛的 Google 搜索,我并没有得到任何提示来解决这个问题,而过去几个小时我一直在尝试解决这个问题。就像我的旧服务器一样,我使用了默认配置,只添加了上面提到的行。
以下是我的文件的内容smb.conf
,希望您能帮助我找出为什么会出现错误NT_STATUS_ACCESS_DENIED
。
[global]
workgroup = WORKGROUP
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
server role = standalone server
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
[homes]
comment = Home Directories
browseable = no
read only = yes
create mask = 0700
directory mask = 0700
valid users = %S
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
[public]
comment = HTTPD public directory
read only = no
locking = no
path = /var/www
guest ok = no
答案1
检查了 的输出后smbtree -d3
,以下行引起了我的注意:resolve_lmhosts: Attempting lmhosts lookup for name DEBIAN64-PLANKJ<0x20>
。事实证明,由于我的主机名被解析为 NETBIOS 名称,因此我被限制在 15 个字符内。我的原始主机名debian64-plankje
是 16。这导致 Samba 服务器出现一些意外行为,匿名连接成功,但需要凭据的连接失败。
deb64-plankje
通过编辑/etc/hostname
和将我的服务器的主机名重命名为/etc/hosts
,然后重新启动(以确保采用了新的主机名)解决了这个问题:)。