我有一个 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"