shell - 受密码保护的 shell 脚本
问题描述
我想让我的脚本密码受到保护。如果我使用此代码,它可以工作:
ACTUAL="sam123"
read -s -p "Password: " enteredpass
我还想保护脚本不被使用cat
and读取vi
。我试图用vim -x <script>
它来加密它,但它不允许我运行它。
我正在使用通用用户,但还没有到任何地方。
解决方案
没有系统管理员的帮助,您无法安全地执行此操作,但是没有它,您可以做一些有点儿可能不太合适的事情。
因此,假设您像这样创建脚本:
cat >myscript <<EOF
echo "Doing something super secret here"
EOF
...但您不希望任何不知道密码的人运行它,即使他们使用的是共享帐户。您可以通过加密来做到这一点:
gpg -ac <myscript >myscript.asc
...然后将该明文嵌入到脚本中:
#!/usr/bin/env bash
{ gpg -d | bash -s "$@"; } <<'EOF'
-----BEGIN PGP MESSAGE-----
jA0EBwMCBogTuO9LcuZg0lsB2wqrsPU8Bw2DRzAZr+hiecYTOe//ajXfcjPI4G6c
P3anEYb0N4ng6gsOhKqOYpZU9JzVVkxeL73CD1GSpcQS46YlKWJI8FKcPckR6BE+
7vqkcPWwcS7oy4H2
=gmFu
-----END PGP MESSAGE-----
EOF
也就是说,如果共享帐户中的其他用户在运行时连接并跟踪您的进程,他们仍然可以收集您的密码——strace
在副本上运行bash -s
将显示输入其标准输入的文本。一般来说,您不应该依赖共享帐户来处理任何需要保密的事情。
推荐阅读
- javascript - OAuth2 授权代码授予流 Node.js 与客户端混合
- angular - 在 bsDatepicker 中提交表单后更改日期
- r - 如何重复列表可变次数
- wordpress - 使用帖子计数的帖子的可变宽度
- hibernate - Hibernate - 在单个事务中保存两个对象
- android - 以目标账户的货币设置所有应用内商品的默认价格
- keystore - 如何在 keytool 中传递一些非 ASCII 字符
- google-apps-script - 使用谷歌应用脚本进行数据操作
- python - 如何运行 g:profiler
- java - 使用 SimpleDateFormat Android 无法解析的日期