我有一个每天使用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身份执行。我不知道出了什么问题。
答案 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用户身份登录,并执行脚本。