왜 `su -`가 /etc/environment를 다시 읽지 않습니까?

왜 `su -`가 /etc/environment를 다시 읽지 않습니까?

다음 줄이 있습니다 /etc/environment.

AAABBB=cccddd

텍스트 콘솔을 사용하여 로그인하면 변수가 설정되므로 재부팅할 필요도 없습니다. 하지만 이렇게 하면 su -변수가 지워집니다. 왜 그런 겁니까?

ArchLinux와 CentOS 6 및 7에 이 기능이 있습니다.

여기중력은 이렇게 말합니다.

로그아웃했다가 다시 로그인하면 변경사항이 적용됩니다.

하지만 su대시를 사용하여 명령을 내리는 것은 바로 그것입니다!

난 정말 불행해요su - 분명한변하기 쉬운. su가 더 나은 행동을 하게 만드는 방법이 있나요? 한 가지 해결 방법은 레코드를 복사하는 것입니다 /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>

관련 정보