홈 폴더도 없고 개인 .bashrc 파일도 없는 시스템 사용자의 로그인 시 명령을 어떻게 실행합니까?

홈 폴더도 없고 개인 .bashrc 파일도 없는 시스템 사용자의 로그인 시 명령을 어떻게 실행합니까?

나는 /etc/passwd 파일을 통해 이 사용자의 홈 폴더를 설정했지만, 그들이 로그인할 때 Python virtualenv를 활성화하고 싶습니다. 개인 파일이 있는 경우 거기에 명령을 .bashrc포함시키고 activatevirtualenv를 사용한 활성화 후 후크로 디렉토리를 변경합니다.

그러나 이러한 사용자에게는 홈 폴더나 개인 파일이 없습니다 .bashrc.

이러한 각 사용자에 대해 로그인 시 다른 명령을 어떻게 실행할 수 있습니까? (단 하나의 명령만 실행하면 됩니다.)

이러한 사용자는 SSH를 사용하여 로그인하지 않고 로그인만 합니다 su. 머신은 Ubuntu 12.04.3 LTS를 실행하는 VPS입니다.

답변1

실행하려는 각 사용자에 대한 명령문이 /etc/profiile.d포함된 파일을 시스템 디렉터리에 추가할 수 있습니다 .if/thenvirtualenv

다음과 같은 파일을 생성한다고 가정해 보겠습니다 /etc/profile.d/me.sh.

if [ "$USER" == "saml" ]; then
  touch /tmp/samsfile
fi

실행 가능하게 만드세요:

$ chmod +x /etc/profile.d/me.sh

그런 다음 다음을 saml사용하여 로 로그인하십시오 su.

$ su saml

임시 파일이 생성되었는지 확인하면 다음과 같습니다.

$ ls -l /tmp/samsfile 
-rw-rw-r-- 1 saml saml 0 Oct 14 00:31 /tmp/samsfile

답변2

환경 변수를 정의하는 것뿐이라면 변수를 다음 위치에 넣을 수 있습니다.~/.environment사용자의 홈 디렉토리에 있습니다. .NET 파일에 더 복잡한 셸 조각을 넣을 수 있습니다 ~/.profile.

모든 사용자 계정에는 해당 계정에 속하지 않더라도 홈 디렉터리가 있습니다. 홈 디렉토리가 존재하지 않는 계정이 있을 수 있지만 그렇게 하는 것은 별 의미가 없습니다. 원하는 경우 루트가 소유한 단일 디렉터리를 이러한 사용자의 홈 디렉터리로 사용할 수 있습니다.

로그인 시 명령을 실행할 수 있는 또 다른 방법은 다음과 같습니다.pam_execPAM 스택에. 그러나 프로그램이원래의사용자 또는 대상 사용자가 아닌 루트로 실행되며 원래 사용자가 선택한 환경에서 실행되므로 루트로 실행하면 보안이 어렵습니다.

관련 정보