Почему /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 в этот момент.