なぜ`su -`は/etc/environmentを再読み込みしないのですか?

なぜ`su -`は/etc/environmentを再読み込みしないのですか?

次の行があります/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>

関連情報