Почему /etc/sudoers не работает, если не используется абсолютный путь?

Я хочу дать свой аккаунт nova Привилегия sudo, поэтому я добавляю эту конфигурацию в / etc / sudoers

Defaults:nova !requiretty

nova ALL = (root) NOPASSWD: /openstack/bin/nova-rootwrap 
/etc/nova/rootwrap.conf *
nova ALL = (root) NOPASSWD: /usr/bin/privsep-helper *

Затем я переключаюсь на новую:

su - nova

Вот вопрос: когда я выполняю sudo /openstack/bin/nova-rootwrap, это работает, но когда я выполняю sudo nova-rootwrap, система спросит меня пароль. Кажется, что NOPASSWD не работа.

я уже добавила /openstack/bin на мой путь env. Система CentOS7.4.

Почему это происходит? Как я могу выполнить это без пароля?

3 ответа

Первое, что приходит мне в голову, это то, что кто-то может изменить путь и заполнить nova-rootwrap каким-нибудь вредоносным кодом.

Существует действительно хорошее обсуждение по этой теме -> https://stackoverflow.com/questions/257616/sudo-changes-path-why

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

То есть, если вы хотите совершенно новую среду, вы должны сделать это:

su --login nova

Это также работает:

sudo -i nova

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

Другие вопросы по тегам