notby.NET Logo

Переход на 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 и поэтому надо использовать ее.