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
для получения дополнительной информации об этом инструменте.