Переход на 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 sudo
2. Добавление пользователя в группу 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 -l
5. Блокировка учетной записи 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 root
6. Заход под root пользователем
Когда необходимо работать в терминале полностью под оболочкой root, так же как раньше через команду
su -
Теперь для этого нужно использовать команду
sudo su -
или
sudo -i
Эти две команды делают одинаковое действие. Идет бесконечная дискуссия, какая команда лучше передает философию UNIX и поэтому надо использовать ее.