Выполнение команд с правам пользователя в скрипте запущенном от рута

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Закрыто
no avatar

Автор темы
ogankvik
Сообщения: 178
Зарегистрирован: 22 ноя 2019, 19:12
Благодарил (а): 98 раз
Поблагодарили: 9 раз
Контактная информация:

Выполнение команд с правам пользователя в скрипте запущенном от рута

#1

12 фев 2021, 16:05

Здравствуйте.
Имеется скрипт .sh запускаемый из systemd. Команды внутри скрипта выполняются с правами суперпользователя. Как сделать чтобы отдельные команды выполнялись с правами обычного пользователя?

Спасибо!

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Выполнение команд с правам пользователя в скрипте запущенном от рута

#2

12 фев 2021, 16:23

ogankvik писал(а):
12 фев 2021, 16:05
отдельные команды выполнялись с правами обычного
если не через sudo, то можно так
runuser -l пользователь -c 'команда'
Изображение
   
Изображение

Аватара пользователя

slant
Сообщения: 4506
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1993 раза
Контактная информация:

Выполнение команд с правам пользователя в скрипте запущенном от рута

#3

12 фев 2021, 16:31

Whowka писал(а):
12 фев 2021, 16:12
В /etc/sudoers.d создать правило. Можно и в /etc/sudoers прописать, но некоторые не советуют трогать этот файл
Это из другой оперы, и в основном для обратного. (Чтобы обычный юзер мог что-то выполнить с правами root). Но это именно про права как таковые, а не смена текущего пользователя для отдельной команды, что нужно ТС.

no avatar

Автор темы
ogankvik
Сообщения: 178
Зарегистрирован: 22 ноя 2019, 19:12
Благодарил (а): 98 раз
Поблагодарили: 9 раз
Контактная информация:

Выполнение команд с правам пользователя в скрипте запущенном от рута

#4

13 фев 2021, 01:06

Chocobo писал(а):
12 фев 2021, 16:23
если не через sudo, то можно так
runuser -l пользователь -c 'команда'

Спасибо! Вы очень помогли :)

Аватара пользователя

madesta
Сообщения: 2018
Зарегистрирован: 11 июн 2017, 21:47
Решено: 30
Откуда: BY
Благодарил (а): 79 раз
Поблагодарили: 434 раза
Контактная информация:

Выполнение команд с правам пользователя в скрипте запущенном от рута

#5

13 фев 2021, 04:29

А если в /etc/sudoers прописать, что данный скрипт может выполнять пользователь без запроса пароля через sudo скрипт.sh? У себя таким образом выходил из положения.

Аватара пользователя

rogoznik
Сообщения: 10044
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1958 раз
Контактная информация:

Выполнение команд с правам пользователя в скрипте запущенном от рута

#6

13 фев 2021, 09:01

madesta, так все равно будет использоваться sudo и фактический запуск будет от суперпользователя
ИзображениеИзображение

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Выполнение команд с правам пользователя в скрипте запущенном от рута

#7

13 фев 2021, 10:33

Как всегда есть несколько путей решения:
можно в юните указать запуск от юзера

Код: Выделить всё

[Service]
User=юзер
Group=группа
И тогда отдельные адм команды запускать с sudo и разрешать ему это sudo использовать
Можно эти же команды требующие доступа в polkit обернуть

В обратную сторону можно как уже выше указали использовать runuser
или же через sudo -i -u юзер команда, в случае запуска от рута - также выполнит ничего не спрашивая.

Все зависит от задачи)
Изображение
   
Изображение

no avatar

Автор темы
ogankvik
Сообщения: 178
Зарегистрирован: 22 ноя 2019, 19:12
Благодарил (а): 98 раз
Поблагодарили: 9 раз
Контактная информация:

Выполнение команд с правам пользователя в скрипте запущенном от рута

#8

21 фев 2021, 12:50

Столкнулся с тем, что вывод текста на экран не работает. Когда выполняешь команду в консоле пользователя - всё ок, но когда скрипт выполняется из systemd, никакое изображение не выводится.

Команда такая: zenity --info --text="Текстовый текст"

runuser -l user -c zenity --info --text="Текстовый текст" в этом случае не работает

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Выполнение команд с правам пользователя в скрипте запущенном от рута

#9

21 фев 2021, 16:36

ogankvik, это отдельная особенность, иксы то у тебя с сессией запущены не там где выполняется zenity и сам скрипт в целом.
Вывод надо направить в иксовую сессию
Изображение
   
Изображение

no avatar

Автор темы
ogankvik
Сообщения: 178
Зарегистрирован: 22 ноя 2019, 19:12
Благодарил (а): 98 раз
Поблагодарили: 9 раз
Контактная информация:

Выполнение команд с правам пользователя в скрипте запущенном от рута

#10

22 фев 2021, 09:58

Chocobo писал(а):
21 фев 2021, 16:36
Вывод надо направить в иксовую сессию
Как это сделать? Не смог сформулировать запрос так, чтобы гугл выдал информацию :)

Аватара пользователя

rogoznik
Сообщения: 10044
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1958 раз
Контактная информация:

Выполнение команд с правам пользователя в скрипте запущенном от рута

#11

22 фев 2021, 10:00

ogankvik писал(а):
22 фев 2021, 09:58
Не смог сформулировать запрос так, чтобы гугл выдал информацию
В современном мире это очень важный навык - надо его развивать
ИзображениеИзображение

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Выполнение команд с правам пользователя в скрипте запущенном от рута

#12

22 фев 2021, 15:17

Попробуй указать перед командой export DISPLAY=:0.0
Или в environment юниту который стартует скрипт
Изображение
   
Изображение

Закрыто

Вернуться в «Программирование, скриптинг, виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость