Предположительно, если вы вошли в систему как не-root и написали sudo passwd -d root
, вход в систему как root будет отключен, а это значит, что вам придется войти в систему как другой пользователь и использовать , su
чтобы переключиться на root (или просто использовать sudo
).
Однако, когда я попытался это сделать, это не отключило вход в систему с правами root, а лишь сняло требование ввода пароля, по сути, предоставив любому человеку возможность получить доступ к root-доступу на моем компьютере (очень плохо).
Книга, в которой мне сказали использовать, sudo passwd -d root
была написана для CentOS 6.5. Моя версия — 7.2. Это недавнее изменение или я что-то не так понял?
решение1
Нет смысла ограничивать вход root на локальном ПК, так как локальный пользователь всегда может загрузить систему в однопользовательском режиме с привилегиями root. Если вам нужно заблокировать вход root через ssh - это можно сделать в /etc/ssh/sshd_config, добавив PermitRootLogin no
решение2
Самый простой способ предотвратить вход root — это испортить зашифрованную строку, которая представляет пароль root в /etc/shadow
. Обычные строки в /etc/shadow
выглядят так:
- Имя пользователя: Это ваше имя для входа.
- Пароль: Это ваш зашифрованный пароль. Пароль должен быть длиной не менее 6-8 символов, включая специальные символы/цифры и т. д.
- Последнее изменение пароля (lastchanged): количество дней с 1 января 1970 года, когда пароль был изменен в последний раз.
- Минимум: минимальное количество дней, необходимое между сменами пароля, т.е. количество дней, оставшихся до того, как пользователю будет разрешено сменить свой пароль.
- Максимум: максимальное количество дней, в течение которых пароль действителен (после этого пользователь будет вынужден сменить свой пароль).
- Предупреждение: количество дней до истечения срока действия пароля, за которое пользователь получает предупреждение о необходимости смены пароля.
- Неактивно: количество дней после истечения срока действия пароля, в течение которых учетная запись будет отключена.
- Срок действия: количество дней с 1 января 1970 года, по истечении которого учетная запись будет отключена, т.е. абсолютная дата, указывающая, когда логин больше не может быть использован.
(Цитируется отсюда) Вы можете добавить ! (восклицательный знак), который не будет сгенерирован из хэш-функций в разделе паролей в строке root в /etc/shadow
, что предотвращает вход с использованием всех возможных паролей. Теперь, когда вы уничтожили метод входа по паролю для root, никто не сможет войти из ниоткуда как rootиспользуя пароль. (Хотя могут существовать и другие способы входа в систему)
Более безопасный способ сделать это — через usermod
утилиту: sudo usermod -L root Это не даст вам все испортить. Подробное usermod
использование см . в usermod(8)
.
Когда вы захотите войти в систему как root, удалите этот ! и все будет хорошо.
решение3
Хотя предыдущий ответ был основан на моих комментариях о блокировке root с помощью usermod -L
или passwd -l
и фактической установке поля пароля на !, они не объясняют вашу затруднительную ситуацию.
Я думал, почему в книге говорится, что удаление с помощью passwd -d
предотвращает доступ. Когда вы устанавливаете пустой пароль с помощью -d, вы запрещаете всем не-root пользователям получать доступ к учетной записи rootудаленно, потому что не-root пользователи не могут переходить на другие учетные записи, у которых нет пароля. Поскольку ssh в настоящее время также блокирует root по умолчанию, учетная запись root будет фактически заблокирована с точки зрения удаленных и не-root пользователей. (например, единственный способ работать как root тогда будет sudo)
Тем не менее, в книге следует упомянуть, что любой пользователь локальной консоли может войти как root без пароля. Хотя в настоящее время большинство консолей недоступны обычным пользователям в консоли виртуальных сред, всегда разумно иметь способ контролировать пароль root.
Более разумной политикой является блокировка root с помощью usermod -L
или passwd -L
, но не раньше, чем будет установлена разумная политика пользователя и протестирована ее.
Альтернативой является установление очень безопасного пароля root, который будет регулярно меняться и который никто не узнает ( makepasswd
например, сгенерировав его случайным образом и сохранив в конверте) для экстренных случаев (например, одиночная загрузка или когда кто-то по ошибке испортит конфигурацию sudo). Тогда пароль root действительно может пригодиться. Таким образом, будет обеспечена привилегированная работа через sudo. В противном случае, если root заблокирован, альтернативой будет загрузка с CD или флешки, как виртуальной, так и реальной.