Я хочу, чтобы sudo позволял мне запускать команду, когда мой текущий рабочий каталог, например, / tmp. Пример использования - удаление файлов из каталога / tmp, поэтому я нахожусь в / tmp ($ PWD оболочки == / tmp), тогда я могу запустить rm -v someuseless.bin (someuseless.bin, конечно, не принадлежит мне, поэтому Я не могу его удалить). Если это невозможно (я не могу найти ссылки в руководствах по sudo), то почему? Может быть, есть нарушение безопасности, которого я здесь не заметил. Спасибо.
Вы определенно можете встроить $cwd
в sudoers, чтобы позволить кому-то удалить файл только в определенном каталоге, но вы ошибаетесь в этом. Способ делать то, что вы хотите, - использовать абсолютные пути в sudoers
, например
orc ALL=(ALL) /bin/rm /tmp/someuseless.bin
Вы можете написать сценарий оболочки, который проверяет текущий каталог, а затем дать sudo права на запуск этого сценария.
/usr/local/bin/cwddostuff.sh:
#!/bin/sh
if [ "$CWD" != "/tmp" ]; then
exit 1
fi
echo do your stuff
/ etc / sudoers:
user ALL=(ALL) /usr/local/bin/cwddostuff.sh
Но остерегайтесь делать это опасно, так как теперь вам нужно также проверить, все ли аргументы в порядке (например, пользователь может находиться в / tmp, но запустить 'rm -rf /').
Лучший способ - это сделать, как сказал MadHatter, явно добавить пути, которые пользователю разрешено удалять, или, как предложил Квайо, установить ACL для каталогов.