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"
理論的には、それでうまくいくはずです。しかし、私はこのようにするのはあまり好きではありません。それはどういうわけか私を怒らせます。
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
ログイン時だけでなく、su時にもディレクトリを作成する場合は、次の行を/etc/pam.d/suでテスト/追加する価値があります。
session optional pam_oddjob_mkhomedir.so