我编写了一个shell脚本来连接到一个受密码保护的数据库。还有几个人希望使用相同的shell脚本来共享数据库访问,但我不想公开正在使用的密码。有没有一种方法可以锁定脚本,使任何人都不能读取它并只执行它?对于他们来说,输入sudo密码来运行脚本也是最理想的
发布于 2011-12-01 10:12:45
有没有一种方法可以锁定脚本,使任何人都不能读取它并只执行它?对于他们来说,输入sudo密码来运行脚本也是最理想的
好的。假设包含凭据的脚本是/usr/local/bin/myscript。使此文件归特权用户所有。假设我们有一个名为“credentials”的用户:
# 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私钥)。
发布于 2011-12-01 07:32:28
为了执行shell脚本,您必须能够阅读它。你可以做几件事:
管理此数据库的
set -xv运行脚本呢?然后,他们可以在脚本执行时看到密码。或者,您可能想看看Perl中的几个只读模块。我在考虑像Acme::EyeDrops或Acme::Bleach这样的东西,它们可以从您的Perl脚本中删除所有难看的字母和数字。(我想知道为什么Python程序员说Perl是不可读的?)
https://stackoverflow.com/questions/8334338
复制相似问题