首页 > 解决方案 > 受密码保护的 shell 脚本

问题描述

我想让我的脚本密码受到保护。如果我使用此代码,它可以工作:

ACTUAL="sam123"
read -s -p "Password: " enteredpass

我还想保护脚本不被使用catand读取vi。我试图用vim -x <script>它来加密它,但它不允许我运行它。

我正在使用通用用户,但还没有到任何地方。

标签: shell

解决方案


没有系统管理员的帮助,您无法安全地执行此操作,但是没有它,您可以做一些有点儿可能不太合适的事情。

因此,假设您像这样创建脚本:

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将显示输入其标准输入的文本。一般来说,您不应该依赖共享帐户来处理任何需要保密的事情。


推荐阅读