Страница 1 из 1
Выполнение команд с правам пользователя в скрипте запущенном от рута
Добавлено: 12 фев 2021, 16:05
ogankvik
Здравствуйте.
Имеется скрипт .sh запускаемый из systemd. Команды внутри скрипта выполняются с правами суперпользователя. Как сделать чтобы отдельные команды выполнялись с правами обычного пользователя?
Спасибо!
Выполнение команд с правам пользователя в скрипте запущенном от рута
Добавлено: 12 фев 2021, 16:23
Chocobo
ogankvik писал(а): ↑12 фев 2021, 16:05
отдельные команды выполнялись с правами обычного
если не через sudo, то можно так
runuser -l пользователь -c 'команда'
Выполнение команд с правам пользователя в скрипте запущенном от рута
Добавлено: 12 фев 2021, 16:31
slant
Whowka писал(а): ↑12 фев 2021, 16:12
В /etc/sudoers.d создать правило. Можно и в /etc/sudoers прописать, но некоторые не советуют трогать этот файл
Это из другой оперы, и в основном для обратного. (Чтобы обычный юзер мог что-то выполнить с правами root). Но это именно про права как таковые, а не смена текущего пользователя для отдельной команды, что нужно ТС.
Выполнение команд с правам пользователя в скрипте запущенном от рута
Добавлено: 13 фев 2021, 01:06
ogankvik
Chocobo писал(а): ↑12 фев 2021, 16:23
если не через sudo, то можно так
runuser -l пользователь -c 'команда'
Спасибо! Вы очень помогли

Выполнение команд с правам пользователя в скрипте запущенном от рута
Добавлено: 13 фев 2021, 04:29
madesta
А если в /etc/sudoers прописать, что данный скрипт может выполнять пользователь без запроса пароля через sudo скрипт.sh
? У себя таким образом выходил из положения.
Выполнение команд с правам пользователя в скрипте запущенном от рута
Добавлено: 13 фев 2021, 09:01
rogoznik
madesta, так все равно будет использоваться sudo
и фактический запуск будет от суперпользователя
Выполнение команд с правам пользователя в скрипте запущенном от рута
Добавлено: 13 фев 2021, 10:33
Chocobo
Как всегда есть несколько путей решения:
можно в юните указать запуск от юзера
И тогда отдельные адм команды запускать с
sudo
и разрешать ему это
sudo
использовать
Можно эти же команды требующие доступа в
polkit
обернуть
В обратную сторону можно как уже выше указали использовать
runuser
или же через
sudo -i -u юзер команда
, в случае запуска от рута - также выполнит ничего не спрашивая.
Все зависит от задачи)
Выполнение команд с правам пользователя в скрипте запущенном от рута
Добавлено: 21 фев 2021, 12:50
ogankvik
Столкнулся с тем, что вывод текста на экран не работает. Когда выполняешь команду в консоле пользователя - всё ок, но когда скрипт выполняется из systemd, никакое изображение не выводится.
Команда такая: zenity --info --text="Текстовый текст"
runuser -l user -c zenity --info --text="Текстовый текст" в этом случае не работает
Выполнение команд с правам пользователя в скрипте запущенном от рута
Добавлено: 21 фев 2021, 16:36
Chocobo
ogankvik, это отдельная особенность, иксы то у тебя с сессией запущены не там где выполняется zenity и сам скрипт в целом.
Вывод надо направить в иксовую сессию
Выполнение команд с правам пользователя в скрипте запущенном от рута
Добавлено: 22 фев 2021, 09:58
ogankvik
Chocobo писал(а): ↑21 фев 2021, 16:36
Вывод надо направить в иксовую сессию
Как это сделать? Не смог сформулировать запрос так, чтобы гугл выдал информацию

Выполнение команд с правам пользователя в скрипте запущенном от рута
Добавлено: 22 фев 2021, 10:00
rogoznik
ogankvik писал(а): ↑22 фев 2021, 09:58
Не смог сформулировать запрос так, чтобы гугл выдал информацию
В современном мире это очень важный навык - надо его развивать
Выполнение команд с правам пользователя в скрипте запущенном от рута
Добавлено: 22 фев 2021, 15:17
Chocobo
Попробуй указать перед командой export DISPLAY=:0.0
Или в environment юниту который стартует скрипт