需要从root脚本以普通用户身份运行chrome

时间:2016-01-07 16:09:42

标签: bash sudo chromium

我有一个每天使用rtcwake关闭的信息亭,这使用root用户。我用过&&在rtcwake完成后执行启动脚本,然后它以root身份启动浏览器导致问题。

这是我使用的命令: echo debian | sudo -S rtcwake -m mem -u -t $(date +%s -d '3 days 7:45') && sudo -u debian -i bash $HOME/kiosk/bin/startup.sh &

sudo命令在某种程度上有效。它调用debian用户,并执行正确的脚本,但是,它仍然会搞砸我的铬首选项。

这是启动脚本:

echo debian | sudo -S hwclock -w

export HOME=/home/debian

#log boot time

echo "Booting at" $(date) >> $HOME/kiosk/bin/logs/boot.log


#echo debian | sudo -S service connman restart


echo debian | sudo -S at 15:30 -f $HOME/kiosk/bin/shutdown.sh

crontab -u debian crontab.txt

bash $HOME/git.sh

#sudo -i -u debian

#start kiosk

export DISPLAY=:0
chromium-browser --kiosk --disable-gpu 
http://localhost/kiosk/Client/main.html &

#update ip
bash /home/debian/git.sh &

我想知道是什么原因导致chrome以root身份执行。我不知道出了什么问题。

2 个答案:

答案 0 :(得分:0)

如果您使用sudo执行命令,则不会更改$HOME等环境变量。由于每个用户设置存储在$HOME中,因此如果需要此类配置文件,则会影响执行的程序。例如检查这个:

sudo -u debian bash -c 'echo $HOME'

它将打印主叫用户的主文件夹,而不是通过-u指定的用户的主文件夹。 sudo命令支持-H命令行选项来处理此问题,但是如果它起作用取决于正在使用的安全警察。

作为一种解决方案,在这种情况下,您可以使用su命令代替sudo

... && su debian -c chromium

由于su本身由root执行,因此不会要求您输入密码。

答案 1 :(得分:0)

您必须输入密码才能登录新的用户shell。

该命令需要修改如下:

echo debian | sudo -S rtcwake -m mem -u -t $(date +%s -d '3 days 7:45') && echo debian | sudo -S -u debian -i bash $HOME/kiosk/bin/startup.sh &

这避免了需要密码以普通Debian用户身份登录,并执行脚本。