Представляю, что ограничения действительно существуют, как в сервере, так и в клиенте, и оба зависят от реализации, а не от какого-либо стандарта, и для их проверки потребуется тестирование.
5.4. Banner Message
В некоторых юрисдикциях, отправка предупредительного сообщения до аутентификация может иметь значение для получения правовой защиты. Многие сайты UNIX-машины, например, обычно отображают текст из /etc/issue, использовать TCP-обертки или аналогичное программное обеспечение для отображения баннера перед тем, как выдавая запрос на вход в систему.
Сервер SSH может послать сообщение SSH_MSG_USERAUTH_BANNER на любой адрес время после запуска этого протокола аутентификации и до аутентификация прошла успешно. Это сообщение содержит текст, который должен быть отображается пользователю клиента перед попыткой аутентификации. формат следующий:
По умолчанию на экране клиента отображается 'сообщение'. Однако, поскольку 'сообщение' скорее всего будет отправляться при каждом входе в систему. попытка, и так как некоторые клиентские программы должны будут открыть отдельный в окне этого предупреждения клиентская программа может разрешить пользователю явным образом отключает отображение баннеров с сервера. Сообщение" может состоять из нескольких строк, с указанием разрывов строк. парами CRLF. Если отображается строка 'сообщения', то происходит фильтрация управляющих символов, обсуждаемый в [SSH-ARCH], ДОЛЖЕН быть использован для избежания атак, посылая Символы управления терминала.
login (1)
традиционно устанавливает PATH
перед передачей команд оболочке, хотя вам, возможно, придется подумать по-другому в OS X, так как есть также ~ / .MacOSX / environment .plist
, где это можно установить (вероятно, не рекомендуется использовать, если это не требуется для какого-то специального приложения), и в последний раз, когда я проверял, Apple добавляла команду path_helper (8)
для muss с ] PATH
в глобальной оболочке rc
файлы в папке / etc
.
Для ZSH в Mac OS X я отключил path_helper
и вручную установил ПУТЬ
только в моем ~ / .zshenv
файле . Это может быть не идеально, если вам действительно нужно что-то по пути, заданному в path_helper
.
Ссылка, которую разместил @corleone, показывает, как интерпретируется переменная окружения $PATH.
Причина, по которой она не сохраняется, когда вы объявляете ее в терминале, заключается в том, что это временный процесс, который в конечном итоге завершится. Переменная должна быть установлена из файла, который загружается при запуске оболочки, обычно это один из ваших dotfiles.
В отличие от многих операционных систем, OS X не включает автоматически .profile или .bashrc в домашние каталоги пользователей, вместо этого по умолчанию используется .bash_profile, который будет оценен последним, если вы создадите .profile или .bashrc (который также будет оценен).
Если вы хотите обновить $PATH, чтобы включить в него определенные каталоги, лучше всего поместить его (в OS X) в .bash_profile, который будет иметь приоритет над любыми другими местами, где задана эта переменная. Если вы не хотите ничего перезаписывать, а просто хотите что-то добавить, в .bash_profile можно включить строку следующего содержания:
PATH="$PATH:/path/to/another/bin"
При запуске оболочки / etc / profile
запускает / usr / libexec / path_helper
, и вывод этой команды - eval
ed для установки начального значение пути. См. man path_helper
, чтобы узнать, как эта программа получает начальный список каталогов для вывода.
loginwindow.app
отвечает за настройку начальная среда для пользователя. Окно входа в систему .app
завершает процесс аутентификации, и когда пользователь аутентифицируется, среда настраивается так, как если бы вызывается login -pf ИМЯ ПОЛЬЗОВАТЕЛЯ
(прочтите man login
и man environment
). На этом этапе ПУТЬ: / usr / bin: / bin: / usr / sbin: / sbin
то же самое, что и user.cs_path = / usr / bin: / bin: / usr / sbin: / sbin
установлен в ядре. Я должен упомянуть, что все это запускается root, и если вы используете сеанс GUI, оболочки нет.
По умолчанию Terminal.app запускает вашу оболочку как оболочку входа в систему. login -pf ИМЯ ПОЛЬЗОВАТЕЛЯ
запускается (от имени пользователя root), а затем читаются rc-файлы оболочки. Для bash
и ksh
читается / private / etc / profile. Для
zsh ,
/ private / etc / zshenv читается. Для
csh ,
/private/etc/csh.login читается. Все используют
/ usr / libexec / path_helper для изменения ПУТЬ, установленного
loginwindow.app`.