Samba 版本:版本 4.1.17-Ubuntu
Ubuntu 15.10
在 Windows 中访问 Samba 共享时,我可以看到该共享,但每当我尝试访问它时 - 输入与创建的 Samba 用户相同的用户名和密码sudo smbpasswd -a benjamin
(与系统用户相同),我只会得到“访问被拒绝”。以下是我的 smb 设置
[global]
server string = %h server (Samba, Ubuntu)
#encrypt passwords = No
map to guest = Bad User
obey pam restrictions = Yes
passdb backend = tdbsam
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
wins support = yes
name resolve order = wins lmhosts host bcast
[TVShare]
path = /media/MEDIA2/TV
available = yes
valid users = benjamin
read only = no
browsable = yes
public = yes
writable = no
在哪里ls -dl /media/MEDIA2/TV/
读
drwxrwxr-x 40 benjamin benjamin 4096 Sep 5 16:18 /media/MEDIA2/TV/
样本日志:
[2015/12/20 12:52:02, 2] ../source3/lib/tallocmsg.c:124(register_msg_pool_usage)
Registered MSG_REQ_POOL_USAGE
[2015/12/20 12:52:02, 2] ../source3/lib/dmallocmsg.c:78(register_dmalloc_msgs)
Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED
[2015/12/20 12:52:02.517860, 2] ../source3/param/loadparm.c:543(max_open_files)
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
[2015/12/20 12:52:02.517954, 2] ../source3/param/loadparm.c:3582(do_section)
Processing section "[TVShare]"
[2015/12/20 12:52:02.518169, 2] ../source3/lib/interface.c:341(add_interface)
added interface eth0 ip=192.168.0.5 bcast=192.168.0.255 netmask=255.255.255.0
[2015/12/20 12:52:02.522658, 0] ../lib/util/become_daemon.c:136(daemon_ready)
STATUS=daemon 'smbd' finished starting up and ready to serve connectionsFailed to fetch record!
答案1
访问samba共享请注意:
- 您必须创建一个具有相同用户名的系统用户。在这种情况下,请发出以下命令:
useradd -s /sbin/nologin benjamin
- 如果你正在使用启用了 SELINUX 的系统(例如:CentOS),请尝试暂时禁用它,然后发出
setenforce 0
编辑:由于问题仍然存在,请尝试以下操作:
- 也许您的 Windows 主机在用户名前添加了错误的域名。在 Windows 机器上,尝试使用
localhost\benjamin
用户名登录 - 问题
pdbedit -L
并检查用户是否benjamin
已列出。如果已列出,请使用以下命令设置一个简单的密码(您可以稍后更改)smbpasswd benjamin
- 如果
benjamin
未列出用户,请尝试重新创建并发出smbpasswd -a benjamin
- 如果此方法无效,请删除 passwd 文件(该文件名为
passwd.tdb
;作为参考,在 CentOS 6.x 系统中,该文件位于 下/var/lib/samba/private/
)。然后,重新创建用户,并发出smbpasswd -a benjamin
- 如果仍然不起作用,请尝试使用 root 帐户发出
smbpasswd -a root
并检查是否可以使用 root 用户登录。注意:这只是一次尝试。完成后,您必须删除 root 的条目smbpasswd -x root
- 最后的办法是增加日志的详细程度,看看能否从中找到线索。对于身份验证尝试,请在 smb.conf 上编辑或添加以下行
log level = 2 winbind:5
,使用类似以下内容检查日志tail -f /var/log/samba/log*
,然后尝试登录。
答案2
您可能需要将相关用户添加到 Linux 中的 SMB 服务中
sudo smbpasswd -a myuser
答案3
在 Windows PC 上,更改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\LmCompatibilityLevel
为 4
网络安全:LAN 管理器身份验证级别通常由组策略设置Send LM & NTLM - use NTLMv2 session security if negotiated
为与旧客户端的备份兼容性。
更改LmCompatibilityLevel
为 4 则设置为Send NTLMv2 response only
答案4
在 samba 服务器上的 smb.conf 的全局部分添加“ntlm auth = yes”对我来说是有效的。
来源: https://bgstack15.wordpress.com/2017/10/01/samba-and-ntlm-for-windows-clients/