Я хочу предоставить свою учетную запись 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
Это также работает :
судо -i nova
Это причина безопасности, потому что очень плохая идея давать sudo без полного пути или давать sudo на скрипт, принадлежащий непривилегированному пользователю, потому что в этот момент вы предоставляете ему привилегию root.