RHEL 6.5 Web 应用程序 PAM AUTH pam_oddjob_mkhomedir

RHEL 6.5 Web 应用程序 PAM AUTH pam_oddjob_mkhomedir

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

相关内容