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