Der zu verwendende Mechanismus hängt von Ihren Zielen ab.
Wenn Sie Ihren Benutzern etwas Bequemes oder Freundliches bieten möchten, /etc/profile
ist dies angemessen, wenn alle Benutzer dieselbe Shell verwenden. Wenn Sie möchten, dass die Befehle nur ausgeführt werden, wenn Sie sich über anmelden ssh
, platzieren Sie Befehle in /etc/ssh/sshrc
. (Wenn es Ihnen nichts ausmacht, dass Benutzer die Befehle mit ihrer eigenen ~/.ssh/rc
Datei überschreiben .)
Wenn Sie einen Benutzer zwingen möchten , ein Programm und nur ein Programm auszuführen , ist die ForceCommand
von DigitalRoss beschriebene Option ein guter Ansatz. (Ich persönlich würde den Benutzer weiter auf ein obligatorisches Zugriffskontrollsystem wie AppArmor , SELinux , TOMOYO oder SMACK beschränken , um sicherzustellen, dass das Programm einem Benutzer nicht die Flucht ermöglicht. Ich habe zehn Jahre lang an AppArmor gearbeitet Werkzeug, das ich zuerst auswählen würde, aber die anderen sind gute Werkzeuge, die von exzellenten Programmierern geschrieben wurden.)
Wenn Sie nur möchten, dass ein Programm ausgeführt wird und den Benutzer in keiner Weise stört , ist es am besten, das pam_exec(8)
Modul zu verwenden, das nicht umgangen werden kann, unabhängig von der Shell funktioniert und eine einfache Möglichkeit bietet, als Benutzer oder als Benutzer ausgeführt zu werden Konto des Programms, das die Autorisierung durchführt. Die Manpage gibt folgendes Beispiel:
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.
Dies könnte laufen auf verlängert werden auth
, account
, password
und session
Aktionen; Dies ist wahrscheinlich session
am besten für die Ausführung beim Anmelden geeignet. Fügen Sie einfach eine Zeile wie folgt hinzu:
session optional pam_exec.so log=/var/log/ssh_login_cmd /usr/local/bin/ssh_cmd
zu Ihrer /etc/pam.d/sshd
Steuerdatei.