![我如何让 shell 要求确认 rm -rf 命令(甚至 sudo)?](https://linux22.com/image/1055190/%E6%88%91%E5%A6%82%E4%BD%95%E8%AE%A9%20shell%20%E8%A6%81%E6%B1%82%E7%A1%AE%E8%AE%A4%20rm%20-rf%20%E5%91%BD%E4%BB%A4%EF%BC%88%E7%94%9A%E8%87%B3%20sudo%EF%BC%89%EF%BC%9F.png)
我想让命令 shell 在执行某些命令(如等)之前提示我dd
确认rm -rf
。
答案1
我认为safe-rm
可以
apt install safe-rm
Safe-rm 是一种旨在防止意外删除重要文件的安全工具。
$ rm -rf /usr
Skipping /usr
答案2
您可以创建一个 bash 脚本,要求确认,然后运行所需的程序。创建一个名为 ask 的文件,其中包含:
#!/bin/bash
echo "Are you sure to run $1 command?"
read RES
if [ "$RES" = "Y" ] || [ "$RES" = "y" ] ; then
echo "Running the command..."
$@
else
echo "Command aborted"
fi
复制 /usr/bin/ 中的 ask 脚本并将其设置为可执行文件(或者将脚本路径添加到 PATH 变量中):
sudo mv path_to_ask_script/ask /usr/bin/ask
cd /usr/bin/
sudo chmod 777 ask
然后您必须在~/.bashrc
文件中创建一个别名:
alias dd='ask dd'
现在通过输入 dd,应该执行 ask 脚本,要求确认并最终调用 dd 命令。
要扩展到其他命令,只需添加一个别名,例如:
alias command_name='ask command_name'
例如:
alias rm='ask rm'
对于 rm 命令,您可以简单地创建一个别名:
alias rm='rm -i'
脚本已在 16.04 版上试用,并能与 gnome-terminal 完美运行
答案3
如果您确实只想以 sudo 形式使用这些命令,可以执行以下操作:
转到/bin
(例如,大多数命令都在这里)这样:
cd /bin
# example how to make dd to posibly only for root/sudo (744)
sudo chmod go-x dd
# or even go further restrict the access to the file fully to root (700)
sudo chmod go-rx dd
# to reverse that setting you did do (755)
sudo chmod go+rx dd
这将删除这些命令中针对组和其他用户的可执行标志。您可以对几乎所有命令执行此操作,并且它会在不使用 sudo 时提示您没有权限。
免责声明:请不要,我是认真的,不要更改 sudo 或 su 的权限可能会导致您无法执行重要操作,并且很难修复。