有一个针对 Active Directory 进行身份验证的 Linux 文件服务器。是否可以自动创建用户的主目录?

有一个针对 Active Directory 进行身份验证的 Linux 文件服务器。是否可以自动创建用户的主目录?

我有一个 Debian 盒子,它针对我们的 Active Directory 进行身份验证,并且运行良好。目前,只有通过 SSH(针对 AD)登录到服务器的用户才拥有可以通过 SMB 访问的目录。当用户通过 SSH 登录时,会创建该目录。用户是否可以通过 SMB 登录并自动创建目录?

这是我的 pam.d 目录中的公共会话文件:

session    required    pam_mkhomedir.so skel=/etc/skel/ umask=0066
session    sufficient    pam_winbind.so
session required    pam_unix.so

答案1

这是可能的。为此,您需要在 Samba 中的共享配置中添加一行,然后创建一个脚本。

[主目录]
    路径 = /srv/homes
    评论 = 用户主目录
    root preexec = /usr/local/sbin/mksmbhome

“mksmbhome”文件是一个 shell 脚本,每次用户连接到该共享时都会运行。它应该测试主目录是否存在,如果不存在,则创建一个包含所有所需目录和文件的目录。

文件:http://oreilly.com/catalog/samba/chapter/book/ch06_06.html第 6.6.4.1 节

答案2

sysadmin1138 解决方案的替代方法是添加smb.conf以下设置:

[global]
...
obey pam restrictions = yes

如果您的用户已经可以使用 SSH 登录,那么这就是您唯一需要做的事情。否则,您需要确保用户可以使用 可见getent passwd

答案3

使用类似的脚本/usr/local/sbin/mksmbhome可能会过于复杂,尤其是使用诸如此类的错误%U,它可能会返回虚假的值。(smb.conf(5):“会话用户名(客户端想要的用户名,不一定与他们获得的用户名相同)”。

%u在 Debian 上使用 sssd 时,使用带有(小写,“当前服务的用户名,如果有”)变量的mkhomedir_helper PAM 组件无需实现自己的脚本即可工作:

root preexec = mkhomedir_helper "%u"

相关内容