Ubu*_*ver 0 permissions command-line bash scripts
我已经成功制作了一个需要 root 权限的 bash 脚本,我可以以 root 身份运行!但是,该脚本仅在我以 root 用户身份使用终端时运行,如果我键入 exit,它就会运行。当我输入:
bash lights_infinity.sh
Run Code Online (Sandbox Code Playgroud)
终端什么都不做。为什么会这样,是否正常?代码是
#!/bin/bash
sudo su
while true
do
sudo -k setleds -D +caps < /dev/console
sleep 0.1
sudo -k setleds -D +caps < /dev/console
sleep 0.1
sudo -k setleds -D -caps < /dev/console
sleep 0.1
done
Run Code Online (Sandbox Code Playgroud)
我需要删除 sudo 命令吗?
我会
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
while true
do
setleds -D +caps < /dev/console
sleep 0.1
setleds -D +caps < /dev/console
sleep 0.1
setleds -D -caps < /dev/console
sleep 0.1
done
Run Code Online (Sandbox Code Playgroud)
并这样做:
sudo lights_infinity.sh
Run Code Online (Sandbox Code Playgroud)
(添加-k如果您想取消 sudo 的 15 分钟时间范围但不应该需要)
您需要“退出”的原因是由于您使用了“sudo su”。这会打开一个您需要“退出”的额外外壳。