sudo -l и вывод sudo -ll

Вопрос или проблема

sudo -l дает мне вывод:

Пользователь test может выполнять следующие команды на сервере:
(root) NOPASSWD: /usr/bin/vim /usr/bin/motd

sudo -ll дает мне вывод:

Запись в Sudoers:
    RunAsUsers: root
    Опции: !authenticate
    Команды:
        /usr/bin/vim /usr/bin/motd

Когда я выполняю как пользователь ‘test’: sudo /usr/bin/vim, я получаю ошибку:

Извините, пользователь test не имеет права выполнять '/usr/bin/vim' как root на сервере.

Думаю, это связано с тем, что /usr/bin/vim является символической ссылкой на другой файл /usr/bin/vim -> /etc/alternatives/vim

Могу ли я что-нибудь сделать?

Оказывается, я неправильно интерпретировал команду sudo -l. Это сообщение:

Пользователь test может выполнять следующие команды на сервере:
(root) NOPASSWD: /usr/bin/vim /usr/bin/motd

означает, что единственная команда, которую можно выполнить без пароля, это vim с /usr/bin/motd как аргументом. Это не означает, что vim или motd можно запускать свободно.

Чувствую себя идиотом 😀

Ответ или решение

Конечно, давайте разберёмся в ситуации с командой sudo.

Анализ проблемы

Сценарий использования команд sudo показывает важность точной интерпретации вывода команд и понимания их назначения.

  1. Вывод команды sudo -l:

    User test may run the following commands on server:
    (root) NOPASSWD: /usr/bin/vim /usr/bin/motd

    Это означает, что пользователь test имеет права выполнять команду vim, но именно с аргументом /usr/bin/motd от имени пользователя root без запроса пароля. Данная запись в файле sudoers не даёт права запускать vim без генерации ошибки, если не указан обязательный аргумент /usr/bin/motd.

  2. Вывод команды sudo -ll:

    Sudoers entry:
       RunAsUsers: root
       Options: !authenticate
       Commands:
           /usr/bin/vim /usr/bin/motd

    Этот вывод подтверждает предыдущую информацию, уточняя, что команда допускает выполнение vim с аргументом /usr/bin/motd от лица root, и аутентификация на данный момент отключена (NOPASSWD).

Ошибка при запуске команды

Вы, вероятно, столкнулись с ошибкой, пытаясь выполнить команду sudo /usr/bin/vim без аргументов:

Sorry, user test is not allowed to run '/usr/bin/vim' as root on server.

Скрытая причина ошибки

Основной причиной ошибки является не наличие символических ссылок, как вы предположили, а именно неправильное использование команды vim. Требуется обязательное указание аргумента /usr/bin/motd, что прописано в sudoers.

Решение проблемы

Чтобы использовать команду правильно, следуйте инструкции, прописанной в sudoers, а именно:

sudo /usr/bin/vim /usr/bin/motd

В результате этой команды файл motd будет открыт в редакторе vim с правами пользователя root, и при этом система не запросит ваш пароль.

Итоги

Чтобы избежать подобных недоразумений в будущем, рекомендуется:

  • Внимательно изучать выводы команд sudo -l и sudo -ll.
  • Понимать, какие параметры и контексты требуют конкретные права в файле sudoers.
  • Проверять конфигурации и пути, используя команды, такие как ls -l, для понимания ссылок и реальных путей файлов.

Эта информация помогает настроить безопасную и корректную работу с командой sudo, минимализируя шансы на возникновение ошибок из-за недопонимания настроек доступа.

Оцените материал
Добавить комментарий

Капча загружается...