Я пытаюсь добавить запись NOPASSWD для 'sudotest.sh' (или любого скрипта / двоичного файла, для которого требуется sudo) в мой файл / etc / sudoers (redhat), но для того, чтобы он работал, я должен указать полный путь. Следующая запись работает просто отлично:

%jenkins ALL=(ALL)NOPASSWD:/home/vts_share/test/sudotest.sh

Проблема в том, что скрипт может переместиться в другой каталог. Я пытался выдать /home/*/sudotest.sh, но у меня не получилось, когда я попытался выполнить sudo ./sudotest.sh, он дал мне разрешение на root

Примечание. У меня тоже нет прав доступа к каталогу /bin /sh.

2 ответа2

1

Это не очень хорошая идея, так как пользователь может создать собственный sh-файл с тем же именем и вставить свои собственные команды.
Ему даже не должно быть позволено изменять исходное содержимое файла, его следует поместить в папку, в которую он не может писать.

0

Это невозможно. То, что вы можете сделать, это symlink sudotest.sh в статическое место, которое указано в sudoers.

Пример:

реальный файл: /home/vts_share/test/sudotest.sh
символическая ссылка: /usr/bin/sudotest.sh

SUDOERS запись:

% jenkins ALL =(ALL)NOPASSWD:/usr/bin/sudotest.sh

Если файл перемещается, просто повторно вставьте ссылку в /usr/bin/sudotest.sh - нет необходимости менять SUDOERS снова. Вы также можете написать это ... updatedb, найти sudotest.sh, ln -s, которые вы можете поместить в cron ... безобразный хак, но это будет работать

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .