Короткий ответ:
Введите это при подсказке:
$ 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
Насколько я знаю, 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.
nis
, скорееdb
(или возможно пользовательский модуль). – Gilles 'SO- stop being evil' 14.11.2010, 19:20