Il meccanismo da utilizzare dipende dai tuoi obiettivi.
Se desideri fornire qualcosa di conveniente o amichevole per i tuoi utenti, allora /etc/profile
è abbastanza ragionevole se tutti i tuoi utenti usano la stessa shell. Se si desidera che i comandi vengano eseguiti solo quando si accede tramite ssh
, posizionare i comandi in /etc/ssh/sshrc
. (Se non ti dispiace che gli utenti abbiano la precedenza sui comandi con il proprio ~/.ssh/rc
file.)
Se si desidera forzare un utente ad eseguire un programma e un solo programma , l' ForceCommand
opzione come descritta da DigitalRoss è un buon approccio. (Personalmente limiterei ulteriormente l'utente con un sistema di controllo degli accessi obbligatorio come AppArmor , SELinux , TOMOYO o SMACK , per garantire che il programma non possa consentire a un utente di fuggire. Ho lavorato su AppArmor per dieci anni, quindi è il lo sceglierei prima, ma gli altri sono ottimi strumenti scritti da programmatori eccellenti.)
Se vuoi solo eseguire un programma e non disturbare l'utente in alcun modo , l'approccio migliore è utilizzare il pam_exec(8)
modulo, che non può essere bypassato, funziona indipendentemente dalla shell e offre una facile capacità di essere eseguito come utente o come utente conto del programma che esegue l'autorizzazione. La manpage fornisce il seguente esempio:
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.
Questo potrebbe essere esteso per l'esecuzione su auth
, account
, password
, e session
le azioni; probabilmente session
sarebbe meglio per l'esecuzione al momento del login. Basta aggiungere una riga come:
session optional pam_exec.so log=/var/log/ssh_login_cmd /usr/local/bin/ssh_cmd
al tuo /etc/pam.d/sshd
file di controllo.