我有一个针对 AD 服务器进行身份验证的 RHEL 6.5,该端运行良好。
该机器还运行使用 PAM 模块进行身份验证的 Web 应用程序。
我复制了登录信息以制作一个 pam 模块供 web 应用程序使用。(rstudio-server),并且登录信息运行正常。
但是,如果用户之前没有登录过,pam_oddjob_mkhomedir 不会创建他们的主目录,如果我 SU 到该用户,则会立即创建主目录。
我已将 selinux 设置为宽容,直到我解决这个问题,并且我正在尝试 pam_mkhomedir.so 和 pam_oddjob_mkhomedir.so(两者都已到位并且 oddjob 服务正在运行)
我认为没问题。。它没有启动会话,它只是从 PAM 进行身份验证,所以我尝试将调用 mkhomedir 的行放入身份验证中,但它不起作用。
使用 pamtester 测试:
# pamtester rstudio 00064742 "authenticate"
Password:
pamtester: successfully authenticated
# pamtester rstudio 00064742 "open_session"
Creating home directory for 00064742.
pamtester: sucessfully opened a session
如您所见,如果打开了会话,则会创建主目录,但不在身份验证下。
这是相关的 pam 文件。
pam.d]# cat rstudio
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth required pam_warn.so
auth include system-auth
#auth optional pam_mkhomedir.so skel=/etc/skel/ umask=0077
auth optional pam_oddjob_mkhomedir.so
account required pam_nologin.so
account include system-auth
password include system-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_oddjob_mkhomedir.so debug
session optional pam_mkhomedir.so skel=/etc/skel/ umask=0077
session required pam_loginuid.so
session optional pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include system-auth
#-session optional pam_ck_connector.so
我无论如何也想不出有什么办法让 oddjob 在会话打开之前创建用户主目录。
有人能建议一种方法来实现这个功能吗?
我原本以为只是:auth可选pam_oddjob_mkhomedir.so
本来会这么做,但做不到那么多。
一些验证:
# service oddjobd status
oddjobd (pid 2427) is running...
# rpm -qa | grep oddjob
oddjob-0.30-5.el6.x86_64
oddjob-mkhomedir-0.30-5.el6.x86_64
# getenforce
Permissive
我正在尝试的另一个想法是使用pam_script。
我已将其添加到 pam rstudio 文件中:
auth required pam_script.so onerr=success dir=/etc/pam-script.d
我在 /etc/pam-script.d 中创建了一个文件并将其放入其中:
#!/bin/sh
dbus-send --system --dest=com.redhat.oddjob_mkhomedir --print-reply / com.redhat.oddjob_mkhomedir.mkhomedirfor string:"$PAM_USER"
从理论上讲,这应该可以解决问题。但我不太喜欢这样做。它在某种程度上冒犯了我。
答案1
在 ubuntu 18 上我遇到了类似的问题,似乎 R-Studio 社区版只尊重“auth”而不尊重“session”
解决方法是引入 /etc/pam.d/rstudio,如下所示:
auth [success=ok new_authtok_reqd=ok ignore=ignore user_unknown=bad default=die] pam_exec.so /etc/pam.d/mkhome.sh
@include common-auth
@include common-account
@include common-password
@include common-session
使用 /etc/pam.d/mkhome.sh 只需 /bin/su -l $PAM_USER -c exit 2> /dev/null
答案2
如果您希望在 su 时以及登录时创建目录,那么可能值得测试/将以下行添加到 /etc/pam.d/su:
session optional pam_oddjob_mkhomedir.so