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

5

Eu configurei as pastas iniciais desses usuários através do arquivo / etc / passwd, mas quando eles logam eu gostaria que eles ativassem um virtualenv python. Se eles tivessem um arquivo .bashrc pessoal, eu incluiria apenas o comando activate e o diretório seria alterado como um gancho pós-ativação com virtualenv.

No entanto, esses usuários não têm pastas base e não possuem arquivos .bashrc pessoais.

Como posso executar um comando diferente no login para cada um desses usuários? (Apenas um comando precisa ser executado).

Esses usuários só efetuaram login usando su , nunca SSH. A máquina é um VPS com Ubuntu 12.04.3 LTS.

    
por Bryson 14.10.2013 / 06:01

2 respostas

8

Você pode adicionar um arquivo ao diretório /etc/profiile.d do sistema que inclui uma instrução if/then para cada um dos usuários para os quais você deseja executar o 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, em seguida, faça o 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
    
por 14.10.2013 / 06:34
2

Se tudo o que você quer 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 ~/.profile .

Todas as contas de usuário têm um diretório inicial, mesmo que não pertença a elas. Enquanto você pode ter contas cujo diretório home não existe, não há muito sentido em fazer isso. Você pode usar um único diretório de propriedade de root como o diretório inicial desses usuários, se desejar.

Outra possibilidade de executar um comando no momento do login seria adicionar pam_exec para a pilha PAM. Mas cuidado, isso é bastante complicado de usar corretamente, porque o programa é executado como o usuário original , ou como root, e não como o usuário alvo, e é executado no ambiente escolhido pelo usuário original. é difícil torná-lo seguro se estiver sendo executado como root.

    
por 15.10.2013 / 03:55