Назад | Перейти на главную страницу

разрешение sudo на удаление определенных файлов

Я хотел бы разрешить пользователям sudo удалять определенные файлы в каталоге / tmp. Я добавил Allow_Cmnd /usr/sbin/userdel для пользователей sudo, но это не удаляет все файлы / tmp, связанные с пользователем.

Итак, как мне настроить sudoers, чтобы они могли удалять определенные файлы только в каталоге / tmp. Я немного погуглил, но узнал, что здесь может быть регулярное выражение. Я попробовал пару настроек, но у меня это не сработало.

Я бы хотел, чтобы у пользователей была возможность выполнять такие команды, как

find /tmp -uid 10002 | grep joeuser | xargs rm -rf 

Лучше всего написать сценарий, который сделает то, что вы хотите. Вы можете выполнить тщательную проверку работоспособности, проверить, делает ли пользователь только то, что ему разрешено, и так далее. И затем разрешить запуск этого сценария только из sudo.

В качестве альтернативы вы также можете разрешить им запускать команду, как вы ее описали: /bin/bash -c "find /tmp -uid 10002 | grep joeuser | xargs rm -rf", или даже проще find /tmp -uid 10002 -path \*joeuser\* -delete.

Как уже указывалось, использование xargs это не лучшая идея. Вы можете использовать find -print0 | xargs -0, или моя личная рекомендация: find /tmp -uid 10002 -path \*joeuser\* -depth -exec rm -rf {} +. Если ваша версия find не поддерживает +, вы можете использовать \; вместо.

Я считаю, что хорошо написанный сценарий будет вашим лучшим вариантом. Однако это действительно зависит от общей цели и от того, насколько хорошо спланирован дизайн ... Вы хотите, чтобы файлы в / tmp, принадлежащие пользователю, выполняющему сценарий, были удалены, или сценарий должен принимать параметры для UID и имени пользователя?

Есть очевидные проблемы с безопасностью, и вам нужно быть очень осторожным. Во время вашего тестирования я не стал бы устанавливать фактическое удаление, но регистрировал (выводил) файлы, которые «были бы» удалены, если бы код удаления был на месте. Затем я бы проверил еще 3 раза, чтобы быть уверенным.

Наконец, другой вариант в зависимости от ваших потребностей - это написать более общий сценарий и запланировать его запуск в определенную дату / время через cron для автоматизации процесса.

Кстати:

/ usr / sbin / userdel - НЕ та команда, которую вы хотите. Это для удаления локальных учетных записей пользователей.

-Брендан