我目前正在编写一个 bash 脚本,该脚本可以在 Linux 系统(目前是 Ubuntu)上安装和设置各种程序。因为它会安装程序并将大量文件复制到需要提升权限的各种文件夹中,所以我已经完成了标准的“我需要提升权限”并退出。
但是,如果可能的话,如果用户不使用 sudo 运行脚本命令(例如从 GUI 文件管理器启动它),我希望能够提示用户输入他们的 sudo 密码并自动提升脚本的权限,无需用户重新启动脚本。
由于这是为在 Linux 安装上运行而设计的,因此任何修改系统的选项都不适用于我的目的。所有选项都需要包含在脚本本身中。
这在 Bash 中可能吗?如果是这样,执行此操作的最佳(安全但简洁)方法是什么?
Mic*_*zek 79
我sudo
直接从脚本运行:
if [ $EUID != 0 ]; then
sudo "$0" "$@"
exit $?
fi
Run Code Online (Sandbox Code Playgroud)
Kev*_*vin 20
将此添加为脚本的第一行:
[ "$UID" -eq 0 ] || exec sudo bash "$0" "$@"
Run Code Online (Sandbox Code Playgroud)
如果您更喜欢图形提示,请更改sudo
为gksu
或gksudo
。
enz*_*tib 16
我建议:
#!/bin/bash
if (($EUID != 0)); then
if [[ -t 1 ]]; then
sudo "$0" "$@"
else
exec 1>output_file
gksu "$0 $@"
fi
exit
fi
# some example stuff
ls -l /root
echo "app: $0"
for f; do
echo ">$f<"
done
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44383 次 |
最近记录: |