Configuré las carpetas de inicio de estos usuarios a través del archivo /etc/passwd, pero cuando inician sesión me gustaría que activen un virtualenv de Python. Si tuvieran un .bashrc
archivo personal, simplemente incluiría el activate
comando allí y el directorio cambiaría como un enlace posterior a la activación con virtualenv.
Sin embargo, estos usuarios no tienen carpetas de inicio ni .bashrc
archivos personales.
¿Cómo puedo ejecutar un comando diferente al iniciar sesión para cada uno de estos usuarios? (Solo es necesario ejecutar un comando).
Estos usuarios solo inician sesión mediante su
, nunca SSH. La máquina es un VPS que ejecuta Ubuntu 12.04.3 LTS.
Respuesta1
Puede agregar un archivo al /etc/profiile.d
directorio del sistema que incluya una if/then
declaración para cada uno de los usuarios para los que desea ejecutar virtualenv
.
Ejemplo
Digamos que creo un archivo como este, /etc/profile.d/me.sh
.
if [ "$USER" == "saml" ]; then
touch /tmp/samsfile
fi
Hazlo ejecutable:
$ chmod +x /etc/profile.d/me.sh
Y luego inicie sesión como saml
, usando su
:
$ su saml
Si verificamos si se creó el archivo temporal, fue:
$ ls -l /tmp/samsfile
-rw-rw-r-- 1 saml saml 0 Oct 14 00:31 /tmp/samsfile
Respuesta2
Si todo lo que quiere hacer es definir variables de entorno, puede ponerlas en~/.environment
en el directorio de inicio de los usuarios. Puedes poner fragmentos de shell más complejos en ~/.profile
.
Todas las cuentas de usuario tienen un directorio de inicio, incluso si no les pertenece. Si bien puedes tener cuentas cuyo directorio personal no exista, no tiene mucho sentido hacerlo. Puede utilizar un único directorio propiedad de root como directorio de inicio de estos usuarios si lo desea.
Otra posibilidad de ejecutar un comando en el momento de iniciar sesión sería agregarpam_exec
a la pila PAM. Pero tenga en cuenta que esto es bastante complicado de usar correctamente, porque el programa se ejecuta como eloriginalusuario, o como root, y no como usuario de destino, y se ejecuta en el entorno elegido por el usuario original, por lo que es difícil hacerlo seguro si se ejecuta como root.