次の行があります/etc/environment
。
AAABBB=cccddd
テキストコンソールを使用してログインすると変数が設定されるため、再起動する必要はありません。しかし、これはsu -
変数を消去します。なぜそんなことですか?
ArchLinuxとCentOS 6と7にこの機能があります。
ここ重力はこう言います。
ログアウトして再度ログインすると、変更内容が適用されます。
しかし、su
ダッシュを使ってコマンドを発行するのはまさにそれです!
私は本当に不幸です。su -
明らか変わりやすい。 suがより良い行動を起こす方法はありますか? 1つの回避策はレコードをコピーすることです/etc/profile.d
。/etc/environment
たとえば、プロファイルスクリプトをインポートできない場合があるため、プロファイルの代わりにプロファイルにレコードを含めるだけでは不十分ですscp
。
修正する
[root@reallin ~]# cat /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid
auth required pam_unix.so
account required pam_unix.so
session required pam_unix.so
[root@reallin ~]# cat /etc/pam.d/su-l
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid
auth required pam_unix.so
account required pam_unix.so
session required pam_unix.so
答え1
su -l <user>
私のシステムで正常に動作している間、「. sudo su -l <user>
profile」はうまく選択されていますが、「/etc/environment」で一般的に設定されている変数をクリアしたときに説明したのと同じ問題を引き起こすようです。
<user>
次のようにして、見かけ上の完全なログインを取得できました(「/etc/environment」で「.profile」と変数を実行)。
sudo -i -u <user>