Le mécanisme à utiliser dépend de vos objectifs.
Si vous souhaitez fournir quelque chose de pratique ou de convivial à vos utilisateurs, alors votre /etc/profile
est assez raisonnable si tous vos utilisateurs utilisent le même shell. Si vous souhaitez que les commandes s'exécutent uniquement lorsque vous vous connectez via ssh
, placez les commandes dans /etc/ssh/sshrc
. (Si cela ne vous dérange pas que les utilisateurs remplacent les commandes par leur propre ~/.ssh/rc
fichier.)
Si vous souhaitez forcer un utilisateur à exécuter un programme et un seul programme , l' ForceCommand
option décrite par DigitalRoss est une bonne approche. (Personnellement, je limiterais davantage l'utilisateur avec un système de contrôle d'accès obligatoire tel que AppArmor , SELinux , TOMOYO ou SMACK , pour garantir que le programme ne puisse pas permettre à un utilisateur de s'échapper. J'ai travaillé sur AppArmor pendant dix ans, c'est donc le outil que je choisirais en premier, mais les autres sont de bons outils écrits par d'excellents programmeurs.)
Si vous voulez qu'un seul programme s'exécute et ne dérange pas l'utilisateur de quelque façon que ce soit , la meilleure approche consiste à utiliser le pam_exec(8)
module, qui ne peut pas être contourné, fonctionne quel que soit le shell et offre une capacité facile à exécuter en tant qu'utilisateur ou en tant qu'utilisateur. compte du programme exécutant l'autorisation. La page de manuel donne l'exemple suivant:
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.
Cela pourrait être étendu à fonctionner sur auth
, account
, password
et session
actions; session
serait probablement préférable pour exécuter lors de la connexion. Ajoutez simplement une ligne comme:
session optional pam_exec.so log=/var/log/ssh_login_cmd /usr/local/bin/ssh_cmd
dans votre /etc/pam.d/sshd
fichier de contrôle.