/etc/securetty
консультируется модулем pam_securetty, чтобы решить, с какого корневого терминала (ttyS) разрешено входить в систему. В прошлом /etc/securetty
к таким программам, как вход в систему , обращались напрямую, но теперь PAM справляется с этим. Таким образом, изменения /etc/securetty
влияют на что-либо, использующее PAM с файлом конфигурации, который использует pam_securetty.so. Таким образом, только программа входа в систему затрагивается по умолчанию. /etc/pam.d/login
используется для локальных входов в систему и /etc/pam.d/remote
используется для удаленных входов в систему (например, telnet).
Основные типы записей и их влияние следующие:
- Если
/etc/securetty
не существует, root может войти в систему с любого tty
- Если
/etc/securetty
существует и пуст, корневой доступ будет ограничен однопользовательским режимом или программами, которые не ограничены pam_securetty (то есть su, sudo, ssh, scp, sftp)
- если вы используете devfs (устаревшая файловая система для обработки / dev), добавление записей в форме vc / [0-9] * позволит получить root-доступ с данного номера виртуальной консоли
- если вы используете udev (для динамического управления устройством и замены для devfs), добавление записей в формате tty [0-9] * позволит получить root-доступ с данного номера виртуальной консоли
- перечисление консоли в securetty обычно не имеет никакого эффекта, поскольку / dev / console указывает на текущую консоль и обычно используется только в качестве имени файла tty в однопользовательском режиме, на который не влияет
/etc/securetty
- добавление записей типа pts / [0-9] * позволит программам, использующим псевдо-терминалы (pty) и pam_securetty, войти в систему с правами root, предполагая, что выделенный pty является одним из перечисленных; как правило, не стоит включать эти записи, потому что это угроза безопасности; это позволит, например, кому-то войти в root через telenet, который отправляет пароли в виде открытого текста (обратите внимание, что pts / [0-9] * - это формат для udev, который используется в RHEL 5.5; он будет другим, если использовать devfs или какая-то другая форма управления устройством)
Для однопользовательского режима /etc/securetty
не используется, потому что вместо логина используется sulogin. Смотрите страницу руководства sulogin для получения дополнительной информации. Также вы можете изменить программу входа в систему, используемую /etc/inittab
для каждого уровня запуска.
Обратите внимание, что вам не следует использовать /etc/securetty
для управления root-входами через ssh. Для этого измените значение PermitRootLogin в /etc/ssh/sshd_config
. По умолчанию /etc/pam.d/sshd
не настроен для обращения к pam_securetty (и поэтому /etc/securetty
). Вы можете добавить строку, чтобы сделать это, но ssh не устанавливает фактический tty, пока не пройдет некоторое время после этапа аутентификации, поэтому он не работает должным образом. На этапах авторизации и учетной записи - по крайней мере, для openssh - tty (PAM_TTY) жестко закодирован в "ssh".
Приведенный выше ответ основан на RHEL 5.5. Многое из этого будет относиться к текущим дистрибутивам других * nix систем, но есть различия, некоторые из которых я отметил, но не все.
Я ответил на это сам, потому что другие ответы были неполными и / или неточными. Многие другие форумы, блоги и т. Д. В Интернете также содержат неточную и неполную информацию по этой теме, поэтому я провел обширные исследования и тестирование, чтобы попытаться получить правильные детали. Если что-то, что я сказал, неверно, пожалуйста, дайте мне знать.
Источники:
vc/X
иttyX
являются синонимами: разные пути к одним и тем же устройствам. Смысл избыточности заключается в том, чтобы отлавливать различные случаи, чтобы не блокировать вас.Традиционно
login
(и, возможноgetty
, я точно не помню) проверял/etc/securetty
и запрещалroot
вход в систему на незарегистрированных терминалах. В современных системах существуют и другие способы сделать это, а также другие меры безопасности. Ознакомьтесь с содержанием/etc/login.defs
(которое также охватываетsecuretty
функциональность и рекомендуется наsecuretty(5)
странице руководства ), а также/etc/pam.d/login
где вы можете контролировать поведение этой функции.Поскольку
securetty
проверяется только с помощьюlogin
, средства входа в систему, которые не используютlogin
(например, SSH сuse_login=no
, диспетчера отображения X и т. Д.), Не затрагиваются.источник
busybox
системах на основе он все еще может быть полезен по той простой причине, чтоlogin
он не имеет/etc/login.defs
поддержки.