Какие шаги система проходит при обработке соединения SSH?

Короткий ответ:

Введите это при подсказке:

$ kill -9 $$

Это уничтожит Вашу оболочку сразу же без способности оболочки сделать что-либо, такое как прерывание сигнал, сохранить историю, выполниться ~/.bash_logout, предупредите об остановленных заданиях или любом том хорошем материале.

Длинный ответ:

Примечание: Эти опции не являются взаимоисключающими; они могут все использоваться сразу.

Опция 1:

Если Вы - перфекционист когда дело доходит до загромождения Вашего файла истории, то то, что можно сделать, изменяют HISTIGNORE переменная для включения шариков команд Вы не хотите зарегистрированный. Например, если Вы добавляете HISTIGNORE='ls*:cd*' к Вашему ~/.bashrc затем любой экземпляр ls и cd не вставляются в Ваш файл истории.

Опция 2:

Если Вы хотите управлять на основе команды командой, какие команды упущены из Вашей истории, можно установить HISTCONTROL='ignorespace' который опустит любые командные строки, запускающиеся с пространства. Используя ignoreboth также опустит повторенные строки. Затем удар клавиши "Пробел" перед вводом команды, заставит ее не обнаруживаться в файле истории.

Опция 3:

Если Вы просто хотите сделать его поэтому при закрытии терминала, оболочка сразу выходит, Вы можете trap сигнал терминальная программа отправляет оболочку (xterm, например, отправляет SIGHUP затем ожидает оболочки для выхода), и сделайте выход, не сохраняя историю, когда это получает этот сигнал. Добавьте это к Вашему ~/.bashrc:

# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP
9
14.11.2010, 23:12
1 ответ

Насколько я знаю, PAM не определяет оболочку пользователя, это оставляют приложению. Модули сессии PAM выполняют универсальные действия и проверки, которые должны быть сделаны для на каждом входе в систему с помощью что конкретный сервис. Если приложение затем хочет запустить оболочку, это свободно сделать так и будет обычно искать оболочку в пользовательской базе данных.

Принятие Вашего вопроса о OpenSSH, это точно, что это делает: после того как пользователь аутентифицируется, и материал сессии PAM был сделан (если настроено для использования PAM ¹), ssh сервер ищет оболочку в пользовательской базе данных (непосредственно, не через библиотеку PAM).

Пользовательская база данных не ограничена /usr/passwd и друзья. На Linux (который я предполагаю, что Вы используете, так как Вы упоминаете shadow), что составляет пользовательскую базу данных, определяется passwd начинание /etc/nsswitch.conf. В мультикомпьютерных установках общими дополнениями к локальной базе данных является NIS и LDAP. Если Вы хотите использовать оболочку, которая не является той в /etc/passwd, это может быть то, что настроить (хотя это было бы немного странно, и возможно люди могут предложить лучшие предложения, если Вы говорите нам, что Вы пытаетесь выполнить).

Если Вы хотите иметь пользователей без полного доступа оболочки, естественное решение состоит в том, чтобы измениться /etc/passwd помещать ограниченную оболочку — возможно, rssh для разрешения только нескольких приложений типа копирования файла, таких как scp, rsync и cvs. Можно также использовать вызванные команды в пользователе ~/.ssh/authorized_keys файл.

Если требуется видеть трассировку того, что делает ssh сервер, запустите демона как ssh -ddd. Можно также получить представление клиента с ssh -vvv, хотя здесь представление сервера - то, что заинтересует Вас больше всего.

v OpenSSH только использует PAM, если он настроен с поддержкой PAM и UsePAM директива установлена на yes в sshd_config. Даже когда это использует PAM, это предлагает другие методы аутентификации в дополнение к PAM; в особенности аутентификация с открытым ключом не проходит PAM.

8
27.01.2020, 20:07
  • 1
    я хочу позволить пользователям моего приложения входить в систему для окружения как обычный пользователь, не создавая учетную запись в системе. Пользовательские данные (имя пользователя, передача и оболочка) будут храниться в sqlite дб. Первый шаг является sqlite pam модуль, которые аутентифицируют пользователей agains дб. Второй шаг должен обеспечить оболочку, крытую тростником от базы данных. Таким образом, я думаю, что Это могло быть выполнено путем записи надлежащего модуля Ниса. Thans для ответа... –  pbm 14.11.2010, 19:11
  • 2
    @pbm: Я не думаю, что Вы хотите nis, скорее db (или возможно пользовательский модуль). –  Gilles 'SO- stop being evil' 14.11.2010, 19:20
  • 3
    это - опечатка.. Я имел в виду "путем записи надлежащего (пользовательского) nss модуля"... –  pbm 14.11.2010, 19:24

Теги

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