我写了一个shell脚本来挂钩到受密码保护的数据库。其他几个想要使用相同的shell脚本来共享数据库访问,但我不想公开正在使用的密码。有没有办法锁定脚本,以便没有人可以读取它只执行它?他们输入他们的sudo密码来运行脚本
也是理想的选择答案 0 :(得分:6)
有没有办法锁定脚本,以便没有人可以只读取它 执行它?他们输入他们的sudo密码也是理想的选择 运行脚本
不确定。假设包含凭据的脚本为/usr/local/bin/myscript
。使此文件由特权用户拥有。假设我们有一个名为“凭据”的用户:
# chown credentials /usr/local/bin/myscript
# chmod 700 /usr/local/bin/myscript
现在只有credentials
用户可以阅读并执行此脚本。
创建另一个如下所示的脚本/usr/local/bin/mywrapper
:
#!/bin/sh
exec sudo -u credentials /usr/local/bin/myscript
并创建适当的/etc/sudoers
条目:
auser ALL=(credentials) /usr/local/bin/myscript
现在,用户auser
运行“mywrapper”。这反过来使用sudo
来调用真实脚本,这将提示auser
输入密码。
我认为这可以做你想要的一切。我们在办公室使用非常类似的机制来保护凭证(在我们的例子中是ssh私钥)。
答案 1 :(得分:0)
为了执行shell脚本,您必须能够读取它。你可以做几件事:
set -xv
运行脚本会怎么样?然后,他们可以在脚本执行时看到密码。或者,您可能希望查看Perl中的几个只读模块。我正在考虑类似Acme::EyeDrops或Acme::Bleach的内容,它会从Perl脚本中删除所有那些难看的字母和数字。 (我想知道为什么Python程序员说Perl是不可读的?)