
Ubuntu 20.04 LTS 서버 버전이 있는데 새 사용자를 생성하고 SSH 연결을 통해 셸에서 사용하는 데 이상한 문제가 있습니다. 그것을 재현하는 단계:
- 을 사용하여 새 사용자를 만들려면 루트 계정을 사용하십시오
useradd --create-home test
. - 를 사용하여 테스트하려면 루트 사용자로 로그인하십시오
su test
.
결과:
root@server:~# useradd --create-home test;
root@server:~# echo $BASH_VERSION
5.0.17(1)-release
root@server:~# su test;
$ echo $BASH_VERSION
$
프롬프트가 설정되지 않고, 환경 변수가 로드되지 않고, 자동 완성이 작동하지 않고, 별칭이 작동하지 않습니다. 마치 .profile 및 .bashrc 파일이 존재하지 않지만 존재하고 권한이 올바르게 설정된 것처럼 보입니다.
root@server:/home/test# md5sum /etc/skel/.profile ./.profile
f4e81ade7d6f9fb342541152d08e7a97 /etc/skel/.profile
f4e81ade7d6f9fb342541152d08e7a97 ./.profile
root@server:/home/test# md5sum /etc/skel/.bashrc ./.bashrc
1f98b8f3f3c8f8927eca945d59dcc1c6 /etc/skel/.bashrc
1f98b8f3f3c8f8927eca945d59dcc1c6 ./.bashrc
root@server:/home/test# ls -lah
total 24K
drwxr-xr-x 3 test test 4.0K Sep 18 13:18 .
drwxr-xr-x 9 root root 4.0K Sep 18 13:17 ..
-rw-r--r-- 1 test test 220 Feb 25 2020 .bash_logout
-rw-r--r-- 1 test test 3.7K Feb 25 2020 .bashrc
-rw-r--r-- 1 test test 807 Feb 25 2020 .profile
테스트 사용자로 로그인하면 프로필이 로드되지 않는 이유는 무엇입니까?
답변1
문서에 따르면 다음과 같습니다 su
.
이전 버전과의 호환성을 위해
su
기본값은 현재 디렉터리를 변경하지 않고 환경 변수 HOME 및 SHELL(대상 사용자가 루트가 아닌 경우 USER 및 LOGNAME 포함)만 설정하는 것입니다. 환경 혼합으로 인해 발생하는 부작용을 방지하려면 항상--login
바로가기 대신 옵션을 사용하는 것이 좋습니다 .-
--login
또는 아래에서도 다음을 실행합니다 -l
.su
로그인.profile
셸은 ( .bashrc
항상 소스로 제공되어야 함) 소스를 제공합니다.
어떤 파일이 로드되었는지 확인하려면 파일 시작 부분에 간단한 줄을 삽입하세요.
echo "$BASH_SOURCE" >&2