/etc/passwd 파일을 통해 이 사용자의 홈 폴더를 설정했지만, 로그인할 때 Python virtualenv를 활성화하고 싶습니다. 개인 .bashrc
파일이 있는 경우 activate
해당 파일에 명령을 포함하고 디렉터리를 virtualenv의 활성화 후 후크로 변경합니다.
그러나 이러한 사용자에게는 홈 폴더나 개인 파일이 없습니다 .bashrc
.
로그인할 때 각 사용자에 대해 서로 다른 명령을 실행하는 방법은 무엇입니까? (단 하나의 명령만 실행하면 됩니다.)
이러한 사용자는 SSH만 사용하여 로그인 su
하고 SSH를 사용하지 않습니다. 머신은 Ubuntu 12.04.3 LTS를 실행하는 VPS입니다.
답변1
실행하려는 각 사용자에 대한 명령문이 /etc/profiile.d
포함된 파일을 시스템 디렉토리에 추가할 수 있습니다 .if/then
virtualenv
예
다음과 같은 파일을 생성한다고 가정해 보겠습니다 /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_exec
PAM 스택에. 하지만 이를 올바르게 사용하는 것은 프로그램이 실행될 때 매우 까다롭다는 점에 유의하세요.원래대상 사용자가 아닌 사용자 또는 루트 사용자이며 원래 사용자가 선택한 환경에서 실행되므로 루트로 실행하면 보안이 어렵습니다.