Переход на sudo и блокировка root в Linux
Одним из важных шагов для повышения безопасности является отказ от прямого использования учетной записи root и переход на использование команды sudo. В Debian при установке, если указать пароль для root-пользователя, то обычный пользователь не будет добавлен в группу sudo. В других дистрибутивах возможно похожее поведение. В статье будет показан полный переход на sudo с блокировкой учетной записи root.
Заходим под учетной записью root
su -1. Установка sudo
В большинстве современных дистрибутивов sudo установлен по умолчанию. Проверим наличие утилиты sudo:
sudo -VЕсли выводится сообщение sudo: command not found, то утилита sudo не установлена.
Устанавливаем sudo в Ubuntu/Debian
apt install sudoУстанавливаем sudo в CentOS/RHEL
yum install sudoУстанавливаем sudo в Arch
pacman -S sudo2. Добавление пользователя в группу sudo/wheel
Чтобы обычный пользователь мог использовать команду sudo, его необходимо добавить в группу sudo или wheel в зависимости от дистрибутива Linux.
Добавляем пользователя в группу sudo в дистрибутивах Ubuntu/Debian
usermod -aG sudo userДобавляем пользователя в группу wheel в дистрибутивах CentOS/RHEL/Arch
usermod -aG wheel userВместо user необходимо указать имя пользователя в системе.
3. Настройка прав sudo для пользователя
В файле /etc/sudoers находятся параметры и настройки прав доступа пользователей и групп для sudo.
Для безопасного редактирования файла /etc/sudoers нужно использовать команду visudo, так как данная команда перед сохранением проверяет корректность внесенных изменений.
Если установлен текстовый редактор nano, то файл через команду visudo с высокой вероятностью будет открыт через него, иначе он будет открыт через редактор vi. Чтобы открывать файл через редактор nano, необходимо указать EDITOR=nano перед командой visudo.
Открываем файл /etc/sudoers через редактор по умолчанию
visudoОткрываем файл /etc/sudoers через редактор nano
EDITOR=nano visudoВ открытом файле убеждаемся, что есть строка
%sudo ALL=(ALL:ALL) ALLили
%wheel ALL=(ALL:ALL) ALLЭта строка разрешает полный доступ для группы sudo (Ubuntu/Debian) или wheel (CentOS/RHEL/Arch). Этой строки полностью достаточно для перехода на sudo.
Настройки для конкретного пользователя необходимо добавлять после этих строк. Так как более нижние строки переопределяют более верхние.
Например, можно добавить пользователя user и разрешить ему выполнять только перечисленные команды
user ALL=(ALL) /usr/bin/apt,/usr/bin/systemctlНо в рамках данной статьи это рассматриватся не будет и настраивать отдельные права не нужно.
4. Проверка sudo
Выходим из root пользователя или открываем новый терминал пользователя
exitВ новом открытом терминале выполняем команду
sudo whoamiВводим пароль пользователя (не root-пароль).
В результате будет выведено сообщение root, которое означает что через sudo выполняются команды от root пользователя.
Если будет сообщение, что пользователь не состоит в группе, необходимо выйти из учетной записи пользователя, заново зайти и проверить повторно.
Можно проверить какие команды доступны пользователю через sudo
sudo -l5. Блокировка учетной записи root
Теперь можно полностью отключить возможность входить как root-пользователь с использованием пароля.
Заблокируем учетную запись root
sudo passwd -l rootДанная команда изменит пароль root на недопустимый и вход через пароль станет невозможен.
Если SSH-ключи или другие методы аутентификации были ранее настроены, они сохранят возможность входа для root-пользователя.
Если возникнет необходимость разблокировки учетной записи root, используем команду
sudo passwd -u rootДанная команда вернет root-пользователю его старый пароль.
Можно заблокировать учетную запись root и полностью удалить его пароль
sudo passwd -dl rootПароль root-пользователя сброшен и учетная запись root заблокирована.
Теперь, перед разблокировкой необходимо будет вначале установить новый пароль для root-пользователя
sudo passwd root6. Заход под root пользователем
Когда необходимо работать в терминале полностью под оболочкой root, так же как раньше через команду
su -Теперь для этого нужно использовать команду
sudo su -или
sudo -iЭти две команды делают одинаковое действие. Идет бесконечная дискуссия, какая команда лучше передает философию UNIX и поэтому надо использовать ее.