Eu configurei as pastas pessoais desses usuários por meio do arquivo /etc/passwd, mas quando eles fizerem login, gostaria que eles ativassem um python virtualenv. Se eles tivessem um arquivo pessoal .bashrc
, eu simplesmente incluiria o activate
comando lá e o diretório mudaria como um gancho pós-ativação com o virtualenv.
No entanto, esses usuários não possuem pastas pessoais e não possuem .bashrc
arquivos pessoais.
Como posso executar um comando diferente no login para cada um desses usuários? (Apenas um comando precisa ser executado.)
Esses usuários estão logados apenas usando su
, nunca SSH. A máquina é um VPS rodando Ubuntu 12.04.3 LTS.
Responder1
Você pode adicionar um arquivo ao /etc/profiile.d
diretório do sistema que inclua uma if/then
instrução para cada um dos usuários para os quais deseja executar virtualenv
.
Exemplo
Digamos que eu crie um arquivo como este, /etc/profile.d/me.sh
.
if [ "$USER" == "saml" ]; then
touch /tmp/samsfile
fi
Torne-o executável:
$ chmod +x /etc/profile.d/me.sh
E então faça login como saml
, usando su
:
$ su saml
Se verificarmos se o arquivo temporário foi criado, foi:
$ ls -l /tmp/samsfile
-rw-rw-r-- 1 saml saml 0 Oct 14 00:31 /tmp/samsfile
Responder2
Se tudo o que você deseja fazer é definir variáveis de ambiente, você pode colocá-las em~/.environment
no diretório inicial dos usuários. Você pode colocar trechos de shell mais complexos em arquivos ~/.profile
.
Todas as contas de usuário possuem um diretório inicial, mesmo que não pertença a elas. Embora você possa ter contas cujo diretório inicial não exista, não há muito sentido em fazer isso. Você pode usar um único diretório de propriedade do root como o diretório inicial desses usuários, se desejar.
Outra possibilidade de executar um comando no momento do login seria adicionarpam_exec
para a pilha PAM. Mas tenha cuidado, pois isso é bastante complicado de usar corretamente, porque o programa é executado comooriginalusuário, ou como root, e não como o usuário de destino, e é executado no ambiente escolhido pelo usuário original, por isso é difícil torná-lo seguro se estiver sendo executado como root.