プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
ProFTPD、「PAM unable to dlopen(/lib64/security/pam_stack.so): /lib64/security/pam_stack.so: cannot open shared object file: No such file or directory」のログを何とかする
結論から書くと

/etc/pam.d/proftpd

の中身を

#%PAM-1.0
auth       required     pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
#auth       required    pam_stack.so service=system-auth
auth       include      system-auth
auth       required     pam_shells.so
#account    required    pam_stack.so service=system-auth
account    include      system-auth
#session    required    pam_stack.so service=system-auth
session    include     system-auth

のように変更して保存、ProFTPDを再起動すれば消えます。

それでは詳細を書いていきますね。

そもそものきっかけはLogwatchさんでした。
Logwatchさんからお届けされるメールに

--------------------- proftpd-messages Begin ------------------------
(中略)
**Unmatched Entries**
PAM unable to dlopen(/lib64/security/pam_stack.so): /lib64/security/pam_stack.so: cannot open shared object file: No such file or directory
PAM adding faulty module: /lib64/security/pam_stack.so

PAM unable to dlopen(/lib64/security/pam_stack.so): /lib64/security/pam_stack.so: cannot open shared object file: No such file or directory
PAM adding faulty module: /lib64/security/pam_stack.so

とか、しこたま出てくるのがウザかったのです。
えーい、鬱陶しい(-公-;

実はFTP自体は普通に使えているので見なかった振りをしていたのですが、
いい加減鬱陶しいので対処することにしました。

まずは状況の確認から行きましょうか。

/var/log/secure

を見ると、確かに

Apr 19 11:30:34 localhost proftpd: PAM unable to dlopen(/lib64/security/pam_stack.so): /lib64/security/pam_stack.so: cannot open shared object file: No such file or directory
Apr 19 11:30:34 localhost proftpd: PAM adding faulty module: /lib64/security/pam_stack.so

のようなログがわちゃわちゃ出ています。

ほんで、どーやったら消えるのよ(--?

ふむふむ(--)

まず原因は「新しいPAMではpam_stack.soが無くなったから」らしいです。

なるほど。
確かにエラーメッセージは「そんなファイルねーよ」ですもんね。
ということは「pam_stack.soを読め!」と指定しているところを消してやれば良いのでしょう。

実際の対処法は

/etc/pam.d/proftpd

を開いて

#%PAM-1.0
auth       required     pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth       required    pam_stack.so service=system-auth
auth       required     pam_shells.so
account    required    pam_stack.so service=system-auth
session    required    pam_stack.so service=system-auth

を、例えば

#%PAM-1.0
auth       required     pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
#auth       required    pam_stack.so service=system-auth
auth       include      system-auth
auth       required     pam_shells.so
#account    required    pam_stack.so service=system-auth
account    include      system-auth
#session    required    pam_stack.so service=system-auth
session    include     system-auth

のように変更してあげます。

required    pam_stack.so service=system-auth



include     system-auth

に変えちゃえってことですね。

あとはProFTPDを再起動して変更を反映すればOKです。
私の環境では

/etc/init.d/xinetd restart

でProFTPDが再起動されますが、環境によっては

/etc/init.d/proftpd restart

で再起動の場合もあるかもしれません。
ご自分の環境に合わせてどーぞ(--)ノ

ってな感じで、完了\(--)/

……なのですが、この変更をしたら私の環境では以下のログが出力されるようになりました。

Apr 19 11:32:22 localhost proftpd: pam_env(proftpd:setcred): Unable to open config file: /etc/security/pam_env.conf: No such file or directory
Apr 19 11:32:22 localhost proftpd: pam_succeed_if(proftpd:session): error retrieving information about user 0

うむ、困った(--ゞ

ぶっちゃけ「/etc/security/pam_env.conf」自体はちゃんと置いてあるのですよ。

ほら、この通りφ(--)

# ls -alt /etc/security/pam_env.conf
-rw-r--r-- 1 root root 2980 Apr 16  2012 /etc/security/pam_env.conf

う~ん、これは突っ込み過ぎると泥沼にはまりそうな気がするなぁ(--;

英語ページも含めてあれやこれやと調べてみたのですが、
結局、根本的な原因は分からず(ノ∀`)

ただ「/etc/pam.d/proftpd」に書いた

session    include     system-auth

の部分が影響しているのは分かったので、該当部分を華麗にコメントアウトしてみました。
これでエラーログは出なくなったし、使ってる感じ普通に動いているので、良しとしています。

ちなみに、最終的な「/etc/pam.d/proftpd」は、こんな感じねφ(--)

#%PAM-1.0
auth       required     pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
#auth       required    pam_stack.so service=system-auth
auth       include      system-auth
auth       required     pam_shells.so
#account    required    pam_stack.so service=system-auth
account    include      system-auth
#session    required    pam_stack.so service=system-auth
#session    include     system-auth
session    required     pam_loginuid.so

コメント部分を除くと

#%PAM-1.0
auth       required     pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth       include      system-auth
auth       required     pam_shells.so
account    include      system-auth
session    required     pam_loginuid.so

になります。

ちょっと腑に落ちないところもあるけど、取りあえず、完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● 環境設定関連  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事