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

Как я могу заставить пользователя выполнять sudo любую команду, но только по определенному пути?

Я хотел бы предоставить пользователю права sudo, но только для определенного пути. Например:

user@domain $> sudo touch /etc/test/directory/samplefile

где у этого пользователя нет разрешений на /etc/test/directory путь, который не принадлежит пользователю, и я не хочу больше открывать разрешения, я не хочу делать пользователя частью группы каталога, потому что это дало бы пользователю права доступа и к другим каталогам.

Пока что я пытался добавить это в файл / etc / sudoers:

user ALL:/etc/test/directory/=(ALL) NOPASSWD: ALL

но этот синтаксис неверен с точки зрения visudo.

любые идеи о том, как сделать этот подход?

Вероятно, вы можете сделать это, используя sudo чтобы позволить пользователям (одному / некоторым / всем) запускать скрипт от имени пользователя, который является член группы и т. д., имеющий права доступа к каталогу.

Эта страница - https://lifecs.likai.org/2016/02/generic-setuidsetgid-wrapper-for-scripts.html похоже, неплохо справляется с вашей проблемой, sudoers предложенная строка -

ALL ALL = (script-owner) NOPASSWD: /path/to/script

бежать с sudo -u script-owner /path/to/script