Cor*_*tek 32 scripting permissions bash root
我正在尝试编写一个 bash 脚本(在 Ubuntu 中),它将使用 tar 备份目录。
如何检查脚本,使其只能以 root 身份(或使用 sudo)运行?
例如,如果用户运行该脚本,则应该说该脚本必须以 sudo 权限运行,然后退出。如果脚本以 root 身份执行,它将继续通过检查。
我知道必须有一个简单的解决方案,我只是无法通过谷歌搜索找到它。
Sco*_*ack 43
要提取有效的 uid,请使用以下命令:
id -u
Run Code Online (Sandbox Code Playgroud)
如果结果为“0”,则脚本要么以 root 身份运行,要么使用 sudo。您可以通过执行以下操作来运行检查:
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
echo "Not running as root"
exit
fi
Run Code Online (Sandbox Code Playgroud)
Bre*_*nt 19
我假设您知道通过将所有权更改为 root
chown root:root file
并将权限设置为 700
chmod 700 file
你会完成同样的事情 - 没有建议以 sudo 运行。
但为了完整起见,我会发布这个答案。
bash 变量$EUID显示脚本正在运行的有效 UID,如果您想确保脚本以 root 身份运行,请检查是否$EUID包含值 0:
if [ $EUID -ne 0 ]; then
echo "$0 is not running as root. Try using sudo."
exit 2
fi
Run Code Online (Sandbox Code Playgroud)
这比/usr/bin/id(对于 bash 脚本!)的解决方案更好,因为它不需要外部命令。