我如何让 shell 要求确认 rm -rf 命令(甚至 sudo)?

我如何让 shell 要求确认 rm -rf 命令(甚至 sudo)?

我想让命令 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 的权限可能会导致您无法执行重要操作,并且很难修复。

相关内容