Изучение конфигурации Sudoers

LinuxBeginner
Практиковаться сейчас

Введение

В Linux пользователь root имеет неограниченные права в системе. Однако постоянная работа с учётной записью root небезопасна. Поэтому используется sudo: эта команда позволяет обычным пользователям выполнять отдельные команды с повышенными привилегиями.

Файл /etc/sudoers определяет, кто может использовать sudo и какие действия ему разрешены. Это один из самых чувствительных файлов политик в Linux, поскольку он задаёт делегированные административные права.

Работать с этим файлом нужно предельно осторожно. Одна синтаксическая ошибка может лишить доступа к системе всех пользователей, включая администраторов. Поэтому никогда не редактируйте этот файл напрямую в обычном текстовом редакторе. Вместо этого используйте специальный инструмент visudo.

Это файл политики, а не просто настройка для удобства. Он определяет, кто может временно получать административные права, при каких условиях и для выполнения каких команд.

В этой лабораторной работе вы научитесь:

  1. Безопасно проверять конфигурацию sudoers с помощью visudo.
  2. Предоставлять пользователю административные права.
  3. Проверять, что эти права работают правильно.

Проверка текущих прав

Перед внесением изменений проверим текущее состояние системы. Для этой лабораторной работы создан обычный пользователь alex. По умолчанию новые пользователи не имеют административных прав.

Просмотр файла sudoers

Для просмотра конфигурации используется visudo. Этот инструмент блокирует файл и проверяет синтаксис перед сохранением, предотвращая случайную блокировку доступа к системе.

Именно для такой проверки и предназначен visudo. При использовании обычного текстового редактора небольшая опечатка может обнаружиться только после сохранения файла, когда доступ через sudo уже перестанет работать.

Просмотрите текущую конфигурацию:

sudo visudo

Вы увидите строки, в которых указано, кому предоставлены права. Например:

root    ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

В этой среде visudo открывает файл в редакторе nano. Нажмите Ctrl+X, чтобы выйти без внесения изменений.

Проверка отсутствия доступа

Теперь переключимся на пользователя alex и попробуем выполнить административную задачу.

Сначала переключитесь на пользователя alex:

su - alex

При появлении запроса введите password.

Затем попробуйте вывести содержимое закрытого каталога /root:

sudo ls /root

При появлении запроса введите password.

Обратите внимание на сообщение об ошибке:

alex is not in the sudoers file.  This incident will be reported.

Это подтверждает, что alex — обычный пользователь и не может выполнять административные действия.

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

В завершение вернитесь к исходному пользователю (labex):

exit

Настройка прав пользователя

Чтобы разрешить пользователю alex выполнять команды от имени root, нужно добавить правило в файл /etc/sudoers.

Сначала безопасно откройте файл:

sudo visudo

Перейдите в конец файла или найдите раздел «User privilege specification» и добавьте следующую строку:

alex    ALL=(ALL:ALL) ALL

Разбор правила:

  • alex: имя пользователя, которому предоставляются права.
  • Первый ALL: правило применяется к подключениям с любого хоста (Host).
  • (ALL:ALL): пользователь может выполнять команды от имени любого пользователя (User), например root, и любой группы (Group).
  • Последний ALL: пользователь может выполнять любые команды (Any Command).

Для учебных целей это правило намеренно предоставляет широкие права. В реальных системах администраторы часто используют более узкие правила sudo, разрешающие только определённые команды, а не полный доступ без ограничений.

Сохраните файл и выйдите из редактора:

  • Нажмите Ctrl+O, затем Enter, чтобы сохранить файл.
  • Нажмите Ctrl+X, чтобы выйти.

Если бы вы допустили опечатку, visudo предупредил бы об этом и не позволил сохранить некорректную конфигурацию.

Проверка обновлённых прав

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

Сначала переключитесь на пользователя alex:

su - alex

Затем снова выполните привилегированную команду:

sudo ls /root

Если появится запрос, введите password.

Проверьте результат. Теперь вы должны увидеть содержимое каталога /root — скорее всего, каталог будет пустым или будет содержать несколько служебных файлов. Сообщений об отказе в доступе быть не должно.

snap

Это подтверждает, что пользователю alex успешно предоставлены повышенные права.

При этом alex по-прежнему не становится пользователем root автоматически. Пользователю alex делегирована возможность запрашивать выполнение команд с повышенными правами через sudo. Такой подход безопаснее и лучше поддаётся аудиту, чем обычный вход в систему под root.

В завершение выйдите из сеанса пользователя alex:

exit

Итоги

В этой лабораторной работе вы научились безопасно управлять правами пользователей.

Главные выводы:

  1. Безопасность прежде всего: всегда используйте visudo для редактирования /etc/sudoers. Никогда не редактируйте этот файл напрямую.
  2. Делегирование прав: можно предоставить определённым пользователям доступ с правами root, не раскрывая пароль root.
  3. Проверка: всегда проверяйте новые права, чтобы убедиться, что они работают как задумано.

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