Выполните программу каждый раз, когда кто-то регистрирует на пути SSH в поле Linux

Для ответа на лизинговый вопрос VMBed предлагает машины для арендной платы на почасовой основе. У нас есть несколько широких интернет-соединений, таким образом, удаленный рабочий стол работает хорошо.

10
задан 13 June 2011 в 04:12
4 ответа

Механизм для использования зависит от целей.

Если Вы хотите обеспечить что-то удобное или дружественное для Ваших пользователей, то Ваш /etc/profile достаточно разумно, если все Ваши пользователи используют ту же оболочку. Если Вы хотите, чтобы команды выполнились только при входе на пути ssh, поместите команды в /etc/ssh/sshrc. (Если Вы не возражаете против пользователей, переопределяющих команды с их собственным ~/.ssh/rc файл.)

Если Вы хотите вынудить пользователя выполнить одну программу и только одну программу, то ForceCommand опция, как описано DigitalRoss является хорошим подходом. (Я лично далее ограничил бы пользователя с системой мандатного управления доступом, такой как AppArmor, SELinux, TOMOYO, или ВКУС, чтобы гарантировать, что программа не может позволить пользователю выходить. Я работал над AppArmor в течение десяти лет, таким образом, это - инструмент, я выбрал бы сначала, но другие - прекрасные инструменты, записанные превосходными программистами.)

Если Вы просто хотите, чтобы одна программа выполнила и не побеспокоила пользователя всегда, то лучший подход должен использовать pam_exec(8) модуль, который не может быть обойден, работы независимо от оболочки, и обеспечивает легкую способность работать как пользователь или как учетная запись пользователя программы, выполняющей авторизацию. Страница справочника дает следующий пример:

   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 файл управления.

12
ответ дан 2 December 2019 в 22:03

Довольно новые версии OpenSSH имеют функцию сервера под названием ForceCommand, который дает контроль к сценарию вместо операции (scp, ssh...), который предназначил пользователь. Сценарий передается исходная команда, таким образом, Вы могли, вероятно, объединить в цепочку к нему после выполнения вообще, необходимо сделать.

От sshd_config (5):

ForceCommand

Вызывает выполнение команды, указанной ForceCommand, игнорируя любую команду, предоставленную клиентом и ~/.ssh/rc если существующий. Команда вызывается при помощи оболочки входа в систему пользователя с-c опцией. Это применяется к оболочке, команде или выполнению подсистемы. Это является самым полезным в блоке Соответствия. Команда, первоначально предоставленная клиентом, доступна в среде SSH_ORIGINAL_COMMAND vari-способный. Определение команды ''внутренних-sftp'' вызовет использование незавершенного sftp сервера, который не требует никаких файлов поддержки при использовании с ChrootDirectory.

Я использовал это однажды, чтобы переопределить scp и обеспечить безопасную загрузку драгоценного камня, не давая каждому пользователю, разрешенному загружать драгоценные камни интерактивный доступ, в котором они не нуждались или хотели.

4
ответ дан 2 December 2019 в 22:03

Один путь состоял бы в том, чтобы использовать системный-журнал-ng в качестве демона системного журнала и настроить его для выполнения фона сценария каждый раз определенная запись в журнале (такая как успешный вход в систему ssh) соответствия.

3
ответ дан 2 December 2019 в 22:03

Проверьте это:

http://ubuntuforums.org/showthread.php?p=9383927

Я не полагаю, что существует способ отключить это от выполнения. Кто-либо еще может проверить это?

0
ответ дан 2 December 2019 в 22:03

Теги

Похожие вопросы