Вопрос или проблема
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
показывает важность точной интерпретации вывода команд и понимания их назначения.
-
Вывод команды 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
. -
Вывод команды 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
, минимализируя шансы на возникновение ошибок из-за недопонимания настроек доступа.