Samba:与特定 Windows 10 用户共享目录,无需密码

Samba:与特定 Windows 10 用户共享目录,无需密码

我想要有关创建 Samba 共享的说明,该共享只能由特定的 Windows 10 用户访问,且无需密码。

我读过一些教程,虽然我可以轻松创建任何人都可以访问的共享,但我无法创建只有特定用户才能访问的共享。我可以看到相关目录,但如果我尝试打开它,我会收到“访问被拒绝”错误,并且 Windows 文件资源管理器会要求输入用户名和密码。

我确实创建了一个 Linux 用户,我认为该用户名是 Windows PC 上的用户名,密码与 Windows 用户相同。如果我将我创建的这个 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 服务器。另一方面,我父亲的笔记本电脑没有 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

谁能看到我遇到的新问题是什么?

非常感谢您的帮助,敬请

答案1

我已经设法弄清楚如何使我所请求的工作完成,并且将发布说明。

  1. 首先,您需要确定需要添加的用户名是什么。最简单的方法是先添加到log level = 2smb.conf然后启动并启用 Samba 服务。然后在登录相关帐户时使用 Windows PC 上的文件资源管理器连接到 Samba 服务器(您不必打开任何共享目录)。然后打开在找到的日志文件,/var/log/samba/log.<ip address of Windows PC>所需的用户名将记录在那里。现在,您可以根据需要将日志级别设置为 0。
  2. 使用命令为 Samba 用户创建一个 Linux 帐户useradd(或者如果您愿意,可以使用现有帐户)。您无需担心此帐户的密码,但如果您创建新帐户,则可能需要阻止其登录。此帐户的用户名不必与上面提到的名称相同,但如果相同会更容易。此帐户的目的是为了文件权限,并让 Linux 确定 Windows 用户可以访问哪些文件和目录。
  3. 使用命令创建一个与步骤2中的Linux帐户同名的Samba用户smbpasswd。确保分配给该帐户的密码与用于Windows帐户的密码相同。
  4. 如果 Samba 和 Windows 帐户不共享相同的用户名,则必须添加!<Samba user> = <Windows user>smb.conf或者添加<Samba user> = <Windows user>smbusersusername map = /etc/samba/smbuserssmb.conf
  5. 就是这样。请确保valid users =在您希望仅由您的 Windows 帐户访问的任何共享上设置该选项。

相关内容