Введение
В Linux пользователь root имеет неограниченные права в системе. Однако постоянная работа с учётной записью root небезопасна. Поэтому используется sudo: эта команда позволяет обычным пользователям выполнять отдельные команды с повышенными привилегиями.
Файл /etc/sudoers определяет, кто может использовать sudo и какие действия ему разрешены. Это один из самых чувствительных файлов политик в Linux, поскольку он задаёт делегированные административные права.
Работать с этим файлом нужно предельно осторожно. Одна синтаксическая ошибка может лишить доступа к системе всех пользователей, включая администраторов. Поэтому никогда не редактируйте этот файл напрямую в обычном текстовом редакторе. Вместо этого используйте специальный инструмент visudo.
Это файл политики, а не просто настройка для удобства. Он определяет, кто может временно получать административные права, при каких условиях и для выполнения каких команд.
В этой лабораторной работе вы научитесь:
- Безопасно проверять конфигурацию sudoers с помощью
visudo. - Предоставлять пользователю административные права.
- Проверять, что эти права работают правильно.
Проверка текущих прав
Перед внесением изменений проверим текущее состояние системы. Для этой лабораторной работы создан обычный пользователь 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
Итоги
В этой лабораторной работе вы научились безопасно управлять правами пользователей.
Главные выводы:
- Безопасность прежде всего: всегда используйте
visudoдля редактирования/etc/sudoers. Никогда не редактируйте этот файл напрямую. - Делегирование прав: можно предоставить определённым пользователям доступ с правами
root, не раскрывая парольroot. - Проверка: всегда проверяйте новые права, чтобы убедиться, что они работают как задумано.
Освоив настройку sudoers, вы сможете создавать безопасные системы, в которых пользователи получают ровно те разрешения, которые им нужны, — не больше и не меньше.



