Я хочу отдать свой аккаунт nova
sudo priviledge, поэтому я добавляю эту конфигурацию в / 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 *
Потом переключаюсь на nova:
su - nova
Вот вопрос: когда я выполняю sudo /openstack/bin/nova-rootwrap
, это работает, но когда я выполняю sudo nova-rootwrap
, система спросит у меня пароль. Кажется, что NOPASSWD
не работает.
я уже добавила /openstack/bin
на мой путь env. Система - CentOS7.4.
Почему это происходит? Как я могу выполнить его без пароля?
Первое, что приходит мне в голову, это то, что кто-то может изменить путь и заставить nova-rootwrap заполнить какой-то вредоносный код.
По этой теме есть действительно хорошее обсуждение -> https://stackoverflow.com/questions/257616/sudo-changes-path-why
Ваша команда на переключение пользователей не обновляет среду, а сохраняет среду вашего предыдущего пользователя. Использование оболочки входа вместо использования только «-» позволит добиться этого более полно.
То есть, если вам нужна совершенно новая среда, вы должны сделать это:
su --login nova
Это тоже работает:
sudo -i nova
Это причина безопасности, потому что это действительно плохая идея давать sudo без полного пути или давать sudo сценарию, который принадлежит не привилегированному пользователю, потому что вы предоставляете им привилегии root в этот момент.