Механизм использования зависит от ваших целей.
Если вы хотите предоставить что-то удобное или дружественное для ваших пользователей, то /etc/profile
это достаточно разумно, если все ваши пользователи используют одну и ту же оболочку. Если вы хотите, чтобы команды выполнялись только при входе через систему ssh
, поместите команды в /etc/ssh/sshrc
. (Если вы не возражаете, пользователи переопределяют команды своим собственным ~/.ssh/rc
файлом.)
Если вы хотите заставить пользователя выполнить одну программу и только одну программу , то ForceCommand
вариант, описанный DigitalRoss, является хорошим подходом. (Лично я бы далее ограничил пользователя обязательной системой контроля доступа, такой как AppArmor , SELinux , TOMOYO или SMACK , чтобы гарантировать, что программа не может позволить пользователю сбежать. Я работал над AppArmor в течение десяти лет, так что это инструмент, который я бы выбрал первым, но остальные - прекрасные инструменты, написанные отличными программистами.)
Если вы просто хотите, чтобы одна программа выполнялась и никоим образом не беспокоила пользователя , тогда лучше всего использовать pam_exec(8)
модуль, который нельзя обойти, работает независимо от оболочки и обеспечивает простую возможность запуска от имени пользователя или пользователя учетная запись программы, выполняющей авторизацию. Страница man дает следующий пример:
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.
Это может быть расширено для работы на auth
, account
, password
и session
действия; вероятно, session
было бы лучше всего выполнить после входа в систему. Просто добавьте строку вроде:
session optional pam_exec.so log=/var/log/ssh_login_cmd /usr/local/bin/ssh_cmd
в ваш /etc/pam.d/sshd
контрольный файл.