Я запускаю скрипт bash с точки зрения root, который затем запускает программу в скрипте

su -c "sh /home/user2/script.sh" -m user2

Проблема заключается в том, что программа, запущенная этим сценарием и выполняемая от имени пользователя user2, все еще пытается создать файлы в /root/.config/, что, конечно же, завершается ошибкой, так как это не разрешено пользователем user2.

Я делаю что-то не так? Есть ли другой лучший способ изменить пользователя в скрипте, ввести пароль пользователя и запустить программу?

1 ответ1

2

Если вы используете параметр -m с su , он передаст вашу текущую среду выполняемой команде или оболочке. В частности, переменная $HOME будет установлена на свое значение в вызывающей оболочке и не будет определена вызванным пользователем.

Таким образом, если вы вошли в систему как root , $HOME будет /root и останется таковым при выполнении script.sh в su -m . Если нет других частей среды, которые вы хотите сохранить, вы можете просто опустить -m в вызове su .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .