以下のようにsuでユーザを変わるタイミングでUnable to open env file: /etc/environment: No such file or directoryというエラーメッセージが出る。
$ su - # tail -f /var/log/auth.log Feb 27 04:17:50 ****** su[27255]: Successful su for root by **** Feb 27 04:17:50 ****** su[27255]: + /dev/pts/7 ****:root Feb 27 04:17:50 ****** su[27255]: pam_env(su:session): Unable to open env file: /etc/environment: No such file or directory Feb 27 04:17:50 ****** su[27255]: pam_unix(su:session): session opened for user root by ****(uid=1000)
touchで/etc/environmentを作り、その後でログインするとエラーメッセージが消える。
# touch /etc/environment # exit $ su - # tail -f /var/log/auth.log Feb 27 04:24:45 ****** su[27347]: Successful su for root by **** Feb 27 04:24:45 ****** su[27347]: + /dev/pts/7 ****:root Feb 27 04:24:45 ****** su[27347]: pam_unix(su:session): session opened for user root by ****(uid=1000)
/etc/environment を読みに行く理由は、/etc/pam.d/****にそのような設定値が書かれているから。今回の場合、suコマンドを使っているので、/etc/pam.d/suの内容を参照する。pam_env.so readenv=1という行が/etc/environmentを読みに行く設定。不要であればreadenv=1の部分をreadenv=0のようにする。
# grep -v '^$' /etc/pam.d/su | grep -v '#' auth sufficient pam_rootok.so session required pam_env.so readenv=1 session required pam_env.so readenv=1 envfile=/etc/default/locale session optional pam_mail.so nopen @include common-auth @include common-account @include common-session
/etc/environmentには環境変数を記述するのだが、中身は空のファイルなので、結局何もしないのと同じ。。
# cat /etc/environment