홈 폴더와 개인 .bashrc 파일 없이 시스템 사용자로 로그인한 경우 어떻게 명령을 실행할 수 있나요?

홈 폴더와 개인 .bashrc 파일 없이 시스템 사용자로 로그인한 경우 어떻게 명령을 실행할 수 있나요?

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

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

로그인할 때 각 사용자에 대해 서로 다른 명령을 실행하는 방법은 무엇입니까? (단 하나의 명령만 실행하면 됩니다.)

이러한 사용자는 SSH만 사용하여 로그인 su하고 SSH를 사용하지 않습니다. 머신은 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사용자의 홈 디렉터리에 있습니다. .~/.profile

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

로그인 시 명령을 실행할 수 있는 또 다른 방법은 다음과 같습니다.pam_execPAM 스택에. 하지만 이를 올바르게 사용하는 것은 프로그램이 실행될 때 매우 까다롭다는 점에 유의하세요.원래대상 사용자가 아닌 사용자 또는 루트 사용자이며 원래 사용자가 선택한 환경에서 실행되므로 루트로 실행하면 보안이 어렵습니다.

관련 정보