我想创建一个 bash 工具来帮助备份我的系统,但我计划将其模块化,以便我可以共享它。
我计划编写source
一些脚本,用户可以将其下载到“插件”文件夹中,并且我预计其中一些脚本将使用 sudo。现在我知道,对于大多数用户来说,多次使用 sudo 意味着不需要每次都输入密码,但我希望格外警惕,至少在每次尝试 sudo 之间进行确认。这意味着,虽然我不一定需要用户为每个 sudo 命令输入密码,但我确实希望他们手动查看、审查和允许每个 sudo 命令。
有什么办法可以做到这一点?例如:
$ script.sh
doing stuff...
about to run `sudo kill -9 938` do you want to proceed? [y/N] y
password: **********
doing other stuff...
about to run `sudo rm -rf ~/.cache` do you want to proceed? [y/N] y
about to run `sudo rm -rf /` do you want to proceed? [y/N] n
skipping.
etc...
finished.
$ _
编辑:我认为我没有很好地解释这个问题。我希望创建某种子 shell,其中的单词sudo
是自定义函数,然后在其中运行脚本。在该自定义函数中,我希望echo
确保在实际运行原始命令之前注销所有 sudo 命令。
答案1
我们可以通过将这些命令添加到 NOPASSWD 下的 sudoers 文件中来以非 root 权限运行该命令
尝试以下命令。
sudo visudo
转到最后一行,然后输入以下命令。
user ALL= NOPASSWD: /bin/bash *.sh
然后保存文件。登录用户并尝试使用 sudo 运行脚本。例如
sudo bash script.sh