Что произойдет, если я удалю все пароли пользователей?

Что произойдет, если я удалю все пароли пользователей?

У меня Fedora VPS с пользователем root, у которого нет пароля. Я вхожу с помощью ключей SSH.

У меня была другая, менее привилегированная учетная запись на этом сервере, используемая для веб-администрирования. Теперь я удалил и ее пароль.

Если на сервере нет пользователей с паролями, что конкретно произойдет, если я потеряю свой SSH-ключ, например? Станет ли сервер навсегда недоступным, так как нет возможности войти на него?

И еще, как sudoведет себя программа, когда ни у пользователя root, ни у вызывающего пользователя нет паролей? Я попробовал, и она даже не спросила у меня пароль: она просто заработала, так как у меня есть эта user ALL=(ALL) ALLстрока в файле sudoers (нужно ли мне ее изменить?)

решение1

Если вы удалите 2-е поле файла /etc/passwd, то пользователи смогут войти без каких-либо проблем. Простая попытка входа позволит им войти. Так что что-то вроде этого, вероятно, не то, что вы хотели бы сделать.

root:$1$iM/2lekk$rXUAcF5fY8ddLL.B1bkH63:12242:0:99999:7:::

/etc/passwd пример

                               ss файла паролей

  1. Имя пользователя: используется при входе пользователя в систему. Длина имени должна быть от 1 до 32 символов.
  2. Пароль: Символ x указывает, что зашифрованный пароль хранится в файле /etc/shadow.
  3. Идентификатор пользователя (UID): Каждому пользователю должен быть назначен идентификатор пользователя (UID). UID 0 (ноль) зарезервирован для root, а UID 1-99 зарезервированы для других предопределенных учетных записей. Дальнейшие UID 100-999 зарезервированы системой для административных и системных учетных записей/групп.
  4. Идентификатор группы (GID): основной идентификатор группы (хранится в файле /etc/group)
  5. Информация об идентификаторе пользователя: Поле комментария. Позволяет добавлять дополнительную информацию о пользователях, такую ​​как полное имя пользователя, номер телефона и т. д. Это поле используется с помощью команды finger.
  6. Домашний каталог: абсолютный путь к каталогу, в котором будет находиться пользователь при входе в систему. Если этот каталог не существует, то каталог пользователя становится /
  7. Команда/оболочка: Абсолютный путь к команде или оболочке (/bin/bash). Обычно это оболочка. Обратите внимание, что это не обязательно должна быть оболочка.

заимствовано изПонимание формата файла /etc/passwd

отключение входа по паролю

Есть тонкое различие между этим полем, которое пусто и содержит x ( :x:), и a :!:в /etc/shadowфайле. Это означает, что учетная запись намеренно настроена так, чтобы ей не разрешалось входить в систему, что, вероятно, больше всего вам нужно.

/etc/тень

root:!:15669:0:99999:7:::

То же самое можно сделать для любой учетной записи, и, вероятно, именно так я бы вам и посоветовал поступить, если вы действительно хотите разрешить sshвход только с использованием открытого/закрытого ключа.

Другие вопросы

Если на сервере нет пользователей с паролями, что конкретно произойдет, если я потеряю свой SSH-ключ, например? Станет ли сервер навсегда недоступным, так как нет возможности войти на него?

Нет, пока у вас есть физический доступ к серверу, вы всегда можете получить доступ к системе. Потребуется перезагрузка и может быть немного сложно с использованием VPS, но это должно быть возможно.

Обычно вы загружаете систему в однопользовательском режиме, после чего можете редактировать /etc/passwdфайлы /etc/shadowпо мере необходимости.

Кроме того, как ведет себя программа sudo, когда ни у пользователя root, ни у вызывающего пользователя нет паролей? Я попробовал, и она даже не спросила у меня пароль: она просто заработала, так как у меня есть строка user ALL=(ALL) ALL в моем файле sudoers (нужно ли мне ее изменить?)

Да, без паролей использование sudoстановится более сложным. Существуют методы использования других источников при работе с sudo. См. этот вопрос и ответ U&L под названием:Установите пароль sudo, отличный от пароля для входа.

решение2

Помните, что есть несколько вещей, которые можно назвать «удалением пароля». В Linux:

  • passwd -d USERнастраивает учетную запись на разрешение входа без пароля. (Некоторые службы, в частности ssh, как правило, настроены на блокировку входа в этом случае.)
  • passwd -l USERблокирует пароль учетной записи: никакой пароль не будет принят. По-прежнему возможен вход другими способами, такими как ключи ssh или sudo.`
  • usermod -e 1 USERблокирует учетную запись (устанавливая срок действия пароля на прошедшую дату): становится невозможным войти в эту учетную запись через любой сервис.

Я предполагаю, что вы имеете в виду второе значение: вы сделали эти учетные записи недоступными для входа с помощью пароля, но доступ к ним по-прежнему возможен через ssh с помощью ключа или с помощью sudo.

Если вы отключили пароль для своей учетной записи, вы больше не сможете использовать sudo.У вас есть льготный период, в течение которого sudo не будет снова запрашивать ваш пароль. После этого, если вы не изменили конфигурацию по умолчанию необычным образом, sudo запросит у вас ваш пароль, который вы не сможете ввести, поскольку пароля больше нет. Это не относится к правилам sudoers с тегом NOPASSWD.

Удаление паролей не делает систему более безопасной, чем выбор надежных паролей. Если ваш VPS предлагает способ входа в систему на виртуальной консоли, то сгенерируйте длинный случайный пароль для учетной записи root, проверьте, что он работает, распечатайте его и положите листок бумаги в сейф. Таким образом, у вас будет способ восстановить доступ к вашей системе, если что-то пойдет не так (например, «ой, я заблокировал себя из ssh» или «ой, я заблокировал себя из sudo»). Для своей учетной записи выберите более короткий пароль, который вы сможете запомнить, отключите пароли для входа по SSH (необязательно) и введите свой пароль, чтобы sudoстать root. Наличие дополнительного уровня аутентификации от вашей обычной учетной записи до root полезно, потому что гораздо сложнее внедрить необнаруженный троян в учетную запись без прав root.

решение3

В большинстве случаев отсутствие пароля вполне приемлемо.

Да, если вы разрешаете только аутентификацию через ключ ssh и теряете свой ключ ssh, вы больше не сможете войти. В этом случае вы можете, например, загрузить какой-нибудь live CD, смонтировать исходную систему и добавить пароль root. (Если у вас нет такой возможности, возможно, лучше иметь пароль root, на всякий случай.)

Sudo можно настроить так, чтобы он не запрашивал пароль. Есть NOPASSWD:возможность активировать это. (См man sudoers. .)

Имейте в виду, что существует множество других способов аутентификации. Вы можете активировать их, настроив свойПАМсистема.

Связанный контент