Como executo um comando no login para um usuário do sistema sem pasta pessoal e sem arquivo .bashrc pessoal?

Como executo um comando no login para um usuário do sistema sem pasta pessoal e sem arquivo .bashrc pessoal?

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 activatecomando 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 .bashrcarquivos 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.ddiretório do sistema que inclua uma if/theninstruçã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~/.environmentno 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_execpara 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.

informação relacionada