Вопрос или проблема
Я сегодня узнал, что отключение PAM в sshd_config
(UsePAM no
) влияет на настройку локали (потому что /etc/default/locale
читается PAM), фактически заставляя систему перейти с en_US.UTF-8 на POSIX. Поскольку я хотел бы оставить PAM отключенным по соображениям безопасности, есть ли способ правильно настроить желаемую локаль без PAM?
Ответ или решение
Конфигурация локали без использования PAM при подключении через SSH может стать вызовом, особенно если вы хотите отключить PAM для улучшения безопасности. В данной статье мы рассмотрим, как можно правильно настроить локаль на сервере, в обход системы управления доступом PAM.
Что такое PAM и как он влияет на локаль?
PAM (Pluggable Authentication Modules) — это система для управления аутентификацией в UNIX-подобных системах. В частности, файл /etc/default/locale
используется PAM для чтения настроек локали. При отключении PAM (например, установкой UsePAM no
в файле sshd_config
), системы могут возвратиться к умолчательным локалям, таким как POSIX
.
Решение проблемы конфигурации локали без использования PAM
Для корректной настройки локали без PAM можно воспользоваться следующими шагами:
-
Установка необходимых локалей:
Убедитесь, что нужные вам локали установлены. Для этого выполните команду:sudo locale-gen en_US.UTF-8
Затем, обновите кэш локалей:
sudo update-locale
-
Редактирование профилей пользователя:
Вы можете установить локаль непосредственно в профиле пользователя, который используется при подключении через SSH. Для этого:-
Откройте файл
~/.bashrc
или~/.profile
для редактирования:nano ~/.bashrc
-
Добавьте следующие строки в конец файла:
export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 export LANGUAGE=en_US.UTF-8
-
Сохраните изменения и закройте редактор. Примените изменения с помощью команды:
source ~/.bashrc
-
-
Настройка SSH:
В файле конфигурации SSH-доступа (обычно/etc/ssh/sshd_config
) убедитесь, чтоUsePAM
установлен вno
:UsePAM no
После внесения изменений перезапустите SSH-сервис для их применения:
sudo systemctl restart sshd
-
Проверка локали после подключения:
После выполнения этих шагов, подключитесь к вашему серверу через SSH и проверьте текущую локаль с помощью команды:locale
Вы должны увидеть
en_US.UTF-8
или другую локаль, которую вы установили.
Дополнительные соображения
-
Глобальные настройки локали: Вы также можете добавить настройки локали в файл
/etc/environment
или/etc/profile
, которые странцы сервера будут подхватывать на уровне системы. Это будет полезно, если вы хотите, чтобы каждое новое подключение имело заданные вами параметры локали. -
Дебаг: Если после выполнения шагов выше локали все еще не установлены, проверьте наличие возможных конфликтов в других конфигурациях и научитесь использовать
printenv
для проверки переменных окружения.
Заключение
Чтобы правильно настроить локаль на сервере без использования PAM, выполните конфигурацию в профиле пользователя и убедитесь, что необходимые локали установлены. Эти шаги помогут избежать возврата к стандартной локали POSIX, обеспечивая при этом безопасность, предоставляемую отключением PAM.