Intereting Posts
Инструмент для отображения PID и ввода / вывода файлов в реальном времени Настольное приложение, запускаемое пользователем администратора (но не явно с sudo), принимает права собственности на файл общего доступа LFS не может подключиться к lfs / source – разрешено отклонение Какой инструмент Linux скажет мне, если все смонтированные диски имеют примерно такую ​​же пропускную способность? sigint не распространяется на фоновый дочерний процесс Wireless ssh "issue" (Нет пути к хосту) tcsh alias – найти порт FreeBSD Почему я получаю синтаксическую ошибку с моей арифметикой Shell? Как сделать этот поиск быстрее в fgrep / Ag? В чем разница между каталогом `/ usr / share / emacs / site-lisp /` и `/ usr / share / emacs23 / site-lisp /`? Разрешить только шестнадцатеричное регулярное выражение Служба systemd не запускает команду tmux при перезагрузке Что именно делает этот скрипт? Сбой Oracle bi со значением выхода 3 KDE5: смесь UTF-8 и ISO-8859-1

Как запустить скрипт от имени пользователя root и текущего пользователя одновременно?

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

У меня проблема в том, что если я запустил весь скрипт как sudo , я не смогу изменить конфигурацию текущего пользователя. Но если я просто добавлю sudo к конкретной команде, для которой требуются права суперпользователя, мне нужно будет ввести пароль, потому что сценарий длинный и sudo .

Есть ли способ запустить скрипт у текущего пользователя, но сохранить привилегию sudo когда мне это нужно?

Есть два основных пути:

  • отделите подзадачу, для которой требуется доступ с правами root, в другую программу / скрипт и запустите эту часть от имени пользователя root (либо через двоичный файл setuid root, либо через sudo )

  • запустить все это как root, и выполнить ту часть, которую нужно запустить как обычный пользователь через su - user