루트로 고소한 후 모든 사용자가 홈 디렉터리 대신 /root에서 시작하는 이유는 무엇입니까?

루트로 고소한 후 모든 사용자가 홈 디렉터리 대신 /root에서 시작하는 이유는 무엇입니까?

나는 이것이 간단해야 한다고 생각하지만, 누군가가 이런 질문을 하는 것을 본 적이 없습니다. 상황은 아주 간단합니다. 사용자가 될 때마다 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

suBuster 이후 데비안의 행동이 바뀌었기 때문에 고용주가 이를 변경했을 수도 있습니다 .신인버스터나도 창조했다alias su='su -'

관련 정보