Как запустить скрипт в пользовательском режиме внутри исполняемого файла jar, который выполняется от имени пользователя root?
Я хочу запустить следующий скрипт в исполняемом jar-файле Java на Raspberry Pi.
скрипт (= stream.sh):
#!/bin/sh
raspivid -fps 25 -w 640 -h 360 -vf -n -o - -t 999999 |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/cam.sdp,rtcp-mux}' :demux=h264
код Java:
Runtime.getRuntime().exec("sh stream.sh"));
Проблема в том, что jar должен быть запущен с помощью sudo, а команда vlc не принимает sudo. Ни скрипт, ни код Java не содержат sudo, но, поскольку jar выполняется как sudo, vlc по-прежнему выдает ошибку "VLC не должен запускаться от имени root...".
Как проще всего запустить скрипт в пользовательском режиме внутри банки?
2 ответа
Я хотел бы использовать su -l $LOGIN -c $CMD
или же sudo -u $LOGIN $CMD
,
Runtime.getRuntime().exec("sudo -u myuser sh stream.sh"));
У man sudoers есть вся необходимая информация.
Вам нужно изменить /etc/sudoers