dpkg postinst - как запустить его как обычный пользователь

Я пишу быстрый сценарий оболочки, который делает что-то с настройками отображения, но это не имеет значения. Сценарий оболочки должен быть помещен в любой каталог, к которому он доступен; Я выбрал /usr/local/bin/<dir>/<script>,

Я использовал сценарий postinst для создания соответствующих ярлыков и регистрации этого сценария в качестве приложения для запуска. Как только настройка завершена, я хочу /usr/local/bin/<dir>/<script> быть выполненным. Кажется, что это выполняется (поскольку генерирует подробные данные), но визуальных изменений, как и ожидалось, нет (настройки дисплея не вступают в силу). Я ожидаю, что изменения будут сделаны для пользователя root. После завершения установки я могу запустить /usr/local/bin/<dir>/<script> чтобы получить желаемый эффект, но sudo /usr/local/bin/<dir>/<script> не дает того же эффекта, так как вносит изменения в настройки отображения корня.

Это может быть просто решено, если команды внутри postinst можно запускать БЕЗ прав доступа root. Как мне этого добиться?

1 ответ

Решение

Если вы хотите запустить что-то, кроме пользователя root, есть несколько способов сделать это. Это называется "сброс привилегий". Если у вас нет особых требований в отношении того, как сохраняется среда, как наследуются возможности или как применяются конфигурации PAM, тогда возможно использовать простейший способ из контекста сценария оболочки. /bin/su, Например,

su $someuser -c /usr/local/bin/$dir/$script

Увидеть man su для получения дополнительной информации об этом инструменте.

Другие вопросы по тегам