나는 이것이 간단해야 한다고 생각하지만, 누군가가 이런 질문을 하는 것을 본 적이 없습니다. 상황은 아주 간단합니다. 사용자가 될 때마다 su user
항상 홈 디렉터리가 아닌 /root 디렉터리에서 시작됩니다. 보여드리겠습니다.
[root@st-test2 ~]# grep "postgres" /etc/passwd
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql/:/bin/bash
[root@st-test2 ~]# su postgres
bash-4.2$ pwd
/root
[root@st-test2 ~]# ls -lhart /var/lib |grep postgres
drwx------. 4 postgres postgres 86 May 5 16:07 pgsql
따라서 postgres 사용자의 홈 디렉터리가 존재하고 /etc/passwd에 설정되어 있음을 알 수 있지만 어떤 이유로든 루트에서 시작합니다. 이것은 내가 만드는 모든 사용자에게 발생하는데 그 이유는 모르겠습니다. 나 또한 전에 이런 일이 일어나는 것을 본 적이 없다고 말할 수는 없다.
답변1
사용자 이름만 인수로 제공하는 경우 su
사용자를 변경하세요.너무 많은 변경을 하지 않고:
이전 버전과의 호환성을 위해
su
기본적으로 현재 디렉터리는 변경되지 않으며, 환경 변수HOME
및 만 설정됩니다SHELL
(대상 사용자가 루트가 아닌 경우USER
및 추가).LOGNAME
따라서 su postgres
동일한 디렉토리에 머무르십시오. 하지만 HOME
새로운 사용자의 홈디렉토리로 설정되어 있기 때문에,cd
~ 할 것이다당신을 올바른 장소로 데려가십시오.
사용자의 기본 디렉터리에서 로그인하고 실행하려면 su
적절하게 구성된 로그인 셸이 실행되도록 요청해야 합니다.
su -l postgres
또는 그 공통 동의어,
su - postgres
답변2
su
Buster 이후 데비안의 행동이 바뀌었기 때문에 고용주가 이를 변경했을 수도 있습니다 .신인버스터나도 창조했다alias su='su -'