我想了解有关创建只能由特定 Windows 10 用户访问而无需密码的 Samba 共享的说明。
我已经阅读了一些教程,虽然我可以轻松创建任何人都可以访问的共享,但我无法创建只有特定用户才能访问的共享。我可以看到有问题的目录,但如果我尝试打开它,我会收到拒绝访问错误,并且 Windows 文件资源管理器要求输入用户名和密码。
我确实使用我认为是 Windows PC 上的用户名和与 Windows 用户相同的密码创建了一个 linux 用户。如果我在上面提到的提示中键入我创建的这个 Linux 用户的凭据,我就被授予访问权限。此时我能想到的就是Linux账户的用户名和对应的Windows账户不一样。
这是我在 smb.conf 中的内容
encrypt passwords = yes
security = user
[Email Backup]
comment = email backup folder
path = /home/samba/emailbackup
guest ok = yes
read only = no
browseable = yes
valid users = xavie emailer +emailbackup
xavie
是应该与 Windows 帐户对应的 Linux 帐户的名称,emailer
是另一个需要访问目录的 Linux 帐户,并且emailbackup
是两个帐户都是成员的组。Windows 帐户是 Microsoft 帐户(即不是本地帐户;绑定到 @Outlook.com 电子邮件地址),如果这会发生任何变化。
如果这个问题是由错误的用户名引起的,谁能告诉我如何找到需要分配给 Linux 帐户的用户名(例如,是否有一个日志文件我可以查看哪些用户试图获得访问权限到 Samba 共享)?否则,还有什么我可以检查的可能是这个问题的原因吗?
编辑: 我在互联网上进行了一些搜索并取得了一些进展。在检查了 Samba 的日志文件后,我发现我认为用户名不正确是正确的。根据日志文件,当用户使用 Microsoft 帐户时,Windows 10 会使用该帐户使用的电子邮件地址而不是用户名向 Samba 识别用户。这是我看到的日志(级别 2):
[2016/08/20 14:15:36.349641, 2] ../source3/param/loadparm.c:2700(lp_do_section)
Processing section "[All Users]"
[2016/08/20 14:15:36.349966, 2] ../source3/param/loadparm.c:2700(lp_do_section)
Processing section "[Email Backup]"
[2016/08/20 14:15:36.350850, 2] ../source3/auth/auth.c:315(auth_check_ntlm_password)
check_ntlm_password: Authentication for user [<snip email address>] -> [<snip email address>] FAILED with error NT_STATUS_NO_SUCH_USER
我将电子邮件地址添加到 smbuser 文件中,将其与我创建的 Linux 帐户相关联。这行得通,现在日志说我成功进行了身份验证,但我现在遇到了一个新问题。
新问题是,当我登录上面提到的帐户时,Samba 共享对我的 PC 根本不起作用。基本上,我的 Ubuntu 服务器上有两个共享;任何人都可以访问的公共共享和我希望仅 Windows 10 用户可以访问的其他共享。在我进行上述更改后,那个 Windows 10 用户现在无法再看到任何共享,甚至无法访问 Ubuntu 服务器。OTOH,我父亲的笔记本电脑,在 Samba 上没有帐户,可以访问服务器并查看两个共享(但未经身份验证无法访问非公共共享)。这是使用 smbusers 更改创建的新日志:
[2016/08/20 14:36:44.523779, 2] ../source3/param/loadparm.c:2700(lp_do_section)
Processing section "[All Users]"
[2016/08/20 14:36:44.524358, 2] ../source3/param/loadparm.c:2700(lp_do_section)
Processing section "[Email Backup]"
[2016/08/20 14:36:44.552274, 2] ../source3/auth/auth.c:305(auth_check_ntlm_password)
check_ntlm_password: authentication for user [<snip email address>] -> [xavie] -> [xavie] succeeded
[2016/08/20 14:36:44.553509, 1] ../source3/param/loadparm.c:2389(lp_idmap_range)
idmap range not specified for domain '*'
[2016/08/20 14:36:44.553782, 1] ../source3/auth/token_util.c:430(add_local_groups)
SID S-1-5-21-1934213540-918117097-1557597498-1000 -> getpwuid(1002) failed
[2016/08/20 14:36:44.554723, 1] ../source3/param/loadparm.c:2389(lp_idmap_range)
idmap range not specified for domain '*'
[2016/08/20 14:36:44.554938, 1] ../source3/auth/token_util.c:430(add_local_groups)
SID S-1-5-21-1934213540-918117097-1557597498-1000 -> getpwuid(1002) failed
如果对任何人有帮助,这里是 smb.conf 的当前内容。我只包括我所做的更改;默认情况下未提及的任何内容:
[global]
log level = 2
username map = /etc/samba/smbusers
encrypt passwords = yes
security = user
[All Users]
comment = Directory accessible to all users
path = /home/samba/allusers
guest ok = yes
read only = no
browseable = yes
create mask = 0777
directory mask = 0777
[Email Backup]
comment = email backup folder
path = /home/samba/emailbackup
guest ok = yes
read only = no
browseable = yes
valid users = xavie emailer +emailbackup
谁能看到我遇到的新问题是什么?
帮助将不胜感激,亲切的问候
我已经设法弄清楚如何使我要求的工作,并将发布说明。
log level = 2
到smb.conf
. 然后启动并启用 Samba 服务。然后在登录到相关帐户时使用 Windows PC 上的文件资源管理器连接到 Samba 服务器(您不必打开任何共享目录)。然后打开在 处找到的日志文件/var/log/samba/log.<ip address of Windows PC>
,所需的用户名将在此处注明。如果需要,您现在可以将日志级别设置为 0。useradd
(如果您愿意,也可以使用现有的帐户)。您无需担心此帐户的密码,但如果您创建一个新帐户,您可能希望阻止其登录。此帐户的用户名不必与上面提到的名称相同,但如果是这样会更容易。该帐户的目的是为了获得文件权限,并让 Linux 确定允许 Windows 用户访问哪些文件和目录。smbpasswd
。确保分配给此帐户的密码与用于 Windows 帐户的密码相同。!<Samba user> = <Windows user>
到smb.conf
或添加<Samba user> = <Windows user>
到smbusers
和username map = /etc/samba/smbusers
到smb.conf
。valid users =
您希望仅由您的 Windows 帐户访问的任何共享上设置该选项。