Mechanizm, który należy zastosować, zależy od twoich celów.
Jeśli chcesz zapewnić użytkownikom coś wygodnego lub przyjaznego , to /etc/profilejest wystarczająco rozsądne, jeśli wszyscy użytkownicy używają tej samej powłoki. Jeśli chcesz, aby polecenia były wykonywane tylko podczas logowania przez ssh, umieść je w /etc/ssh/sshrc. (Jeśli nie masz nic przeciwko użytkownikom nadpisującym polecenia własnym ~/.ssh/rcplikiem).
Jeśli chcesz zmusić użytkownika do uruchomienia jednego programu i tylko jednego programu , ForceCommanddobrym rozwiązaniem jest opcja opisana przez DigitalRoss. (Osobiście ograniczyłem użytkownika do obowiązkowego systemu kontroli dostępu , takiego jak AppArmor , SELinux , TOMOYO lub SMACK , aby upewnić się, że program nie może pozwolić użytkownikowi na ucieczkę. Pracowałem nad AppArmor od dziesięciu lat, więc to jest narzędzie, które wybrałbym jako pierwsze, ale pozostałe są świetnymi narzędziami napisanymi przez doskonałych programistów.)
Jeśli chcesz, aby jeden program był wykonywany i nie przeszkadzał użytkownikowi w jakikolwiek sposób , najlepszym rozwiązaniem jest użycie pam_exec(8)modułu, którego nie można ominąć, działa niezależnie od powłoki i zapewnia łatwą możliwość uruchamiania jako użytkownik lub jako użytkownik konto programu wykonującego autoryzację. Strona man podaje następujący przykład:
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.
To może być przedłużony do uruchomienia na auth, account, password, i sessiondziałania; prawdopodobnie sessionbyłby najlepszy do wykonania po zalogowaniu. Po prostu dodaj wiersz:
session optional pam_exec.so log=/var/log/ssh_login_cmd /usr/local/bin/ssh_cmd
do /etc/pam.d/sshdpliku kontrolnego.