Ограничение доступа sudo с помощью файла sudoers
На этом этапе вы узнаете, как ограничить привилегии sudo пользователя только определенными командами с использованием файла sudoers. Это реализует принцип минимальных привилегий, согласно которому пользователи должны иметь только минимальные привилегии, необходимые для выполнения своих задач.
Понимание файла sudoers
Файл /etc/sudoers контролирует, кто может использовать команду sudo и какие команды они могут выполнять. Никогда не редактируйте этот файл напрямую с помощью обычного текстового редактора, так как синтаксические ошибки могут заблокировать вас от доступа к системе. Вместо этого всегда используйте команду visudo, которая проверяет на наличие синтаксических ошибок перед сохранением.
Редактирование файла sudoers
Для безопасного редактирования файла sudoers используйте команду visudo:
sudo visudo
Это откроет файл sudoers в редакторе по умолчанию (обычно nano или vi).
Понимание синтаксиса sudoers
Базовый синтаксис записи sudo в файле sudoers выглядит следующим образом:
user_or_group host=(run_as_user:run_as_group) NOPASSWD: commands
Где:
user_or_group: Пользователь или группа, к которой применяется это правило.
host: Имя хоста, на котором это правило применяется (обычно ALL).
run_as_user: Пользователь, от имени которого будут выполняться команды (обычно ALL, что означает root).
run_as_group: Группа, от имени которой будут выполняться команды (можно опустить).
NOPASSWD: Необязательный тег, который позволяет выполнять команды без ввода пароля.
commands: Конкретные команды, которые можно выполнять с помощью sudo.
Добавление ограниченного доступа с использованием sudo
Прокрутите файл до конца и добавьте следующую строку, чтобы дать пользователю trusted_advisor разрешение выполнять только команды cp и mv без ввода пароля:
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
Для сохранения файла в nano нажмите Ctrl+O, затем Enter, а для выхода нажмите Ctrl+X.
Тестирование ограниченного доступа с использованием sudo
Теперь проверим, работает ли ограниченный доступ с использованием sudo, как ожидалось. Сначала создадим тестовый файл в текущем каталоге:
echo "This is a test file" > important_file.txt
Теперь перейдем к пользователю trusted_advisor:
su - trusted_advisor
Введите пароль при запросе.
Попробуем скопировать файл в корневой каталог, что должно быть разрешено:
sudo cp /home/labex/project/important_file.txt /root/
Это должно выполниться успешно без запроса пароля.
Теперь попробуем выполнить команду, которая не находится в разрешенном списке, например cat:
sudo cat /root/important_file.txt
Вы должны получить ошибку "доступ запрещен", так как команда cat не находится в разрешенном списке команд.
Наконец, убедимся, что файл был скопирован в корневой каталог:
sudo ls /root/
В выводе вы должны увидеть important_file.txt.
Выйдите из сессии пользователя trusted_advisor:
exit
Удаление тестового файла
Для очистки удалите тестовый файл:
sudo rm important_file.txt