Сценарий, выполняемый другим пользователем из 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 вызов.