#shell #command #pattern #verification #challenge #zsh #prompt

bin+lib shellfirm

shellfirm 会拦截任何危险的模式(默认或由你定义),然后提示你一个小挑战以进行双重验证,有点像终端的验证码。

7 个版本

0.2.10 2023 年 12 月 9 日
0.2.5 2022 年 8 月 30 日
0.2.2 2022 年 7 月 31 日
0.1.4 2022 年 1 月 12 日

#3#challenge

26 每月下载量

MIT 许可证

56KB
1K SLoC

Buy Me a Coffee at ko-fi.com

shellfirm

哎呀呀 又做了?😱 😱 😰

我怎样才能救自己?

  • rm-rf*
  • git reset --hard 在按下回车键之前?
  • kubectl delete ns 停止!你将要删除大量资源
  • 还有更多!

你想从别人的错误中学习吗?

shellfirm 会拦截任何危险的模式,并立即提示一个小挑战,以进行双重验证你的操作,把它想象成终端的验证码。

rm -rf /
#######################
# RISKY COMMAND FOUND #
#######################
* You are going to delete everything in the path.

Solve the challenge: 8 + 0 = ? (^C to cancel)

它是如何工作的?

shellfirm 将在幕后评估所有 shell 命令。如果检测到危险模式,你将立即收到一个带有相关警告的提示来验证你的命令。

示例

设置你的 shell

通过 brew 安装

brew tap kaplanelad/tap && brew install shellfirm

或从 发布页面 下载二进制文件,解压文件并将它移动到 /usr/local/bin 文件夹。

验证 shellfirm 安装

shellfirm --version

验证安装

mkdir /tmp/shellfirm
cd /tmp/shellfirm
git reset --hard

选择你的 shell

Oh My Zsh下载 zsh 插件
curl https://raw.githubusercontent.com/kaplanelad/shellfirm/main/shell-plugins/shellfirm.plugin.oh-my-zsh.zsh --create-dirs -o ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/shellfirm/shellfirm.plugin.zsh

shellfirm 添加到 Zsh 加载时的 Oh My Zsh 插件列表(在 ~/.zshrc 内部)

plugins=(... shellfirm)
BashBash 实现基于 https://github.com/rcaloras/bash-preexec 项目,该项目在执行命令之前添加了一个预执行钩子。
# Download bash-preexec hook functions. 
curl https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh -o ~/.bash-preexec.sh

# Source our file at the end of our bash profile (e.g. ~/.bashrc, ~/.profile, or ~/.bash_profile)
echo '[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh' >> ~/.bashrc

# Download shellfirm pre-exec function
curl https://raw.githubusercontent.com/kaplanelad/shellfirm/main/shell-plugins/shellfirm.plugin.sh -o ~/.shellfirm-plugin.sh

# Load pre-exec command on shell initialized
echo 'source ~/.shellfirm-plugin.sh' >> ~/.bashrc
fish
curl https://raw.githubusercontent.com/kaplanelad/shellfirm/main/shell-plugins/shellfirm.plugin.fish -o ~/.config/fish/conf.d/shellfirm.plugin.fish
Zsh
# Add shellfirm to conf.d fishshell folder
curl https://raw.githubusercontent.com/kaplanelad/shellfirm/main/shell-plugins/shellfirm.plugin.zsh -o ~/.shellfirm-plugin.sh
echo 'source ~/.shellfirm-plugin.sh' >> ~/.zshrc
容器化技术:Docker

ℹ️ 打开一个新的shell会话

👀 👀 验证安装 👀 👀

你应该会看到一个 shellfirm 提示挑战。

如果你没有收到提示挑战

  1. 确保 shellfirm --version 返回一个有效的响应。
  2. 确保你下载了Zsh插件并将其添加到 .zshrc 中的 Oh My Zsh 插件中。

危险命令

我们预先定义了一组默认启用的危险命令组,这些命令可能会造成破坏。

默认启用
base true
git true
fs true
fs-strict false
kubernetes false
kubernetes-strict false
heroku false
terraform false

添加/删除新的组检查

shellfirm config update-groups

更改挑战

目前我们在拦截危险命令时支持3种不同的挑战

  • Math - 默认挑战,需要你解决一个数学问题。
  • Enter - 仅需要按下 Enter 以继续。
  • Yes - 需要输入 yes 以继续。

你可以通过运行以下命令来更改默认挑战

shellfirm config challenge

任何时候,你都可以通过按 ^C 取消危险命令。

忽略模式

你可以通过运行命令来禁用所选组中的一个或多个模式

shellfirm config ignore

拒绝模式命令

通过选择不允许在shell中运行的模式ID来限制用户运行命令

shellfirm config deny

升级 shellfirm

brew upgrade shellfirm

贡献

感谢您对贡献的兴趣!请参阅贡献指南以获取指导。

版权

版权(C)2022 @kaplanelad。有关更多详细信息,请参阅LICENSE

依赖关系

约10-21MB
约291K SLoC