如何在以root身份执行的可执行jar中以用户模式运行脚本?

时间:2013-12-02 14:34:53

标签: java shell raspberry-pi vlc runtime.exec

我想在Raspberry Pi上的Java可执行jar中运行以下脚本。

脚本(= 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身份运行...”。

让脚本在jar内以用户模式运行的最简单方法是什么?

2 个答案:

答案 0 :(得分:2)

我会使用su -l $LOGIN -c $CMDsudo -u $LOGIN $CMD

答案 1 :(得分:2)

Runtime.getRuntime().exec("sudo -u myuser sh stream.sh"));

man sudoers拥有您需要的所有信息。

您需要更改/ etc / sudoers