El mecanismo a utilizar depende de tus objetivos.
Si desea proporcionar algo conveniente o amigable para sus usuarios, entonces /etc/profile
es lo suficientemente razonable si todos sus usuarios usan el mismo shell. Si desea que los comandos se ejecuten solo cuando inicie sesión a través de ssh
, coloque los comandos en /etc/ssh/sshrc
. (Si no le importa que los usuarios anulen los comandos con su propio ~/.ssh/rc
archivo).
Si desea obligar a un usuario a ejecutar un programa, y solo un programa , entonces la ForceCommand
opción descrita por DigitalRoss es un buen enfoque. (Personalmente, limitaría aún más al usuario con un sistema de control de acceso obligatorio como AppArmor , SELinux , TOMOYO o SMACK , para garantizar que el programa no permita que un usuario escape. He trabajado en AppArmor durante diez años, así que ese es el herramienta que elegiría primero, pero las otras son buenas herramientas escritas por excelentes programadores).
Si solo desea que un programa se ejecute y no moleste al usuario de ninguna manera , entonces el mejor enfoque es usar el pam_exec(8)
módulo, que no se puede omitir, funciona independientemente del shell y proporciona una capacidad fácil de ejecutar como usuario o como usuario cuenta del programa que realiza la autorización. La página de manual da el siguiente ejemplo:
Add the following line to /etc/pam.d/passwd to rebuild the
NIS database after each local password change:
passwd optional pam_exec.so seteuid make -C /var/yp
This will execute the command
make -C /var/yp
with effective user ID.
Esto podría extenderse a ejecutar en auth
, account
, password
, y session
acciones; probablemente session
sería mejor para ejecutar al iniciar sesión. Simplemente agregue una línea como:
session optional pam_exec.so log=/var/log/ssh_login_cmd /usr/local/bin/ssh_cmd
a su /etc/pam.d/sshd
archivo de control.