Сценарий, выполняемый другим пользователем из root, создает файлы в неправильном каталоге (root)

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

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

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

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

1 ответ

Решение

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

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

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