Answers:
这正是这样pam_mkhomedir
做的目的。如果该目录不存在,则
该pam_mkhomedir
模块可以在登录时创建该用户的主目录。
如何安装它取决于您的分发。但是您需要将其放在中的一个或多个文件中/etc/pam.d
。
例如,在我的系统上/etc/pam.d/system-login
,执行登录的所有其他服务(ssh,gdm等)都包含了该服务。
我把pam_mkhomedir.so
在session
堆栈,如:
session optional pam_loginuid.so
session required pam_env.so
session optional pam_lastlog.so
session include system-auth
session optional pam_mkhomedir.so # <<< right here
session optional pam_ck_connector.so nox11
session optional pam_gnome_keyring.so auto_start
session optional pam_motd.so motd=/etc/motd
您放置的位置完全取决于堆栈中的其他内容。但是您应该将其放在可能需要主目录的其他任何内容之前。
请参阅man 8 pam_mkhomedir
以了解其支持的选项。
auth
堆栈中而不是session
)。如果应用程序不使用pam堆栈,则您必须在应用程序本身中构建一些内容。
在Ubuntu 14.04 system-login
中不存在,但是存在另一个名为as的文件common-session
。
我去了那里:
root@GW:~# vim /etc/pam.d/common-session
#
session optional pam_systemd.so skel=/etc/skel/ umask=0077
如果不存在,这将创建主目录,并将权限设置为 700
umask=0022
。我相信您会删除所有功能,包括read
可能会阻止某些基于密钥的身份验证/信任机制在多用户系统或其他情况下起作用的功能。
我建议使用oddjob-mkhomedir:
对于Centos 7,此方法有效:
yum install oddjob-mkhomedir
将此附加到/etc/pam.d/system-auth
和/etc/pam.d/password-auth
:
session optional pam_oddjob_mkhomedir.so skel=/etc/skel
最后:
systemctl enable oddjob; systemctl start oddjob
该消息最初发布在这里:https://www.centos.org/forums/viewtopic.php?t = 48631
注意:如果您只是挂载了/home
分区,请不要忘记这样做restorecon /home