web-dev-qa-db-ja.com

RHEL 6.5WebアプリケーションPAMAUTH pam_oddjob_mkhomedir

ADサーバーに対して認証するRHEL6.5があり、その側は正常に機能しています。

マシンは、PAMモジュールを使用して認証するWebアプリケーションも実行しています。

ログインをコピーして、Webアプリで使用するためのpamモジュールを作成しました。 (rstudio-server)そしてログインは完全に機能しています。

ただし、ユーザーが以前にログインしたことがない場合、そのユーザーにSUを実行すると、ホームディレクトリはpam_oddjob_mkhomedirによって作成されません。ホームディレクトリは即座に作成されます。

これをソートするまでselinuxをpermissiveに設定し、pam_mkhomedir.soとpam_oddjob_mkhomedir.soの両方を試しています(どちらも配置されており、oddjobサービスが実行されています)

問題はないと思います。セッションを開始していないので、PAMから認証しているだけなので、mkhomedirを呼び出す行をauthに入れてみますが、機能していません。

パムテスターでのテスト:

# 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を取得してユーザーのhomedirを作成する方法を私は一生見ることができません。

誰かがこれを機能させる方法を提案できますか?

私はそれだけだと思っていたでしょう: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

私が試しているもう1つのアイデアは、pam_scriptを使用することです。

これをpamrstudioファイルに追加しました:

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"

理論的には、それでうまくいくはずです。しかし、私はこのようにするのはあまり好きではありません。それはどういうわけか私を怒らせます。

5
Frank Hauptle

Ubuntu 18でも同様の問題が発生しました。R-Studioコミュニティバージョンは「セッション」ではなく「認証」のみを尊重しているようです

回避策は、次のように/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

1
A K

ログイン時だけでなく、su時にもディレクトリを作成する場合は、次の行を/etc/pam.d/suでテスト/追加する価値があります。

session optional pam_oddjob_mkhomedir.so

0