首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只想执行shell脚本

只想执行shell脚本
EN

Stack Overflow用户
提问于 2011-12-01 07:10:12
回答 2查看 1.3K关注 0票数 2

我编写了一个shell脚本来连接到一个受密码保护的数据库。还有几个人希望使用相同的shell脚本来共享数据库访问,但我不想公开正在使用的密码。有没有一种方法可以锁定脚本,使任何人都不能读取它并只执行它?对于他们来说,输入sudo密码来运行脚本也是最理想的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-01 10:12:45

有没有一种方法可以锁定脚本,使任何人都不能读取它并只执行它?对于他们来说,输入sudo密码来运行脚本也是最理想的

好的。假设包含凭据的脚本是/usr/local/bin/myscript。使此文件归特权用户所有。假设我们有一个名为“credentials”的用户:

代码语言:javascript
复制
# chown credentials /usr/local/bin/myscript
# chmod 700 /usr/local/bin/myscript

现在,只有credentials用户可以读取和执行此脚本。

创建另一个脚本/usr/local/bin/mywrapper,如下所示:

代码语言:javascript
复制
#!/bin/sh
exec sudo -u credentials /usr/local/bin/myscript

并创建相应的/etc/sudoers条目:

代码语言:javascript
复制
auser   ALL=(credentials) /usr/local/bin/myscript

现在,用户auser运行"mywrapper“。这反过来使用sudo调用实际的脚本,该脚本将提示auser输入他们的密码。

我想这能做你想要的一切。我们在我的办公室使用非常类似的机制来保护凭证(在我们的例子中,是ssh私钥)。

票数 7
EN

Stack Overflow用户

发布于 2011-12-01 07:32:28

为了执行shell脚本,您必须能够阅读它。你可以做几件事:

管理此数据库的

  • 是谁?用户是否可以获得自己的密码以进行只读访问?这将是理想的,因为它可以限制他们对数据库的一小部分的访问。
  • 如果他们必须有sudo访问权限才能运行此脚本,也许可以将密码从文件中删除并放入具有600个权限集的文件中。问题是这可能会泄露。例如,如果他们使用set -xv运行脚本呢?然后,他们可以在脚本执行时看到密码。
  • 您能否在数据库之外创建他们可能感兴趣的数据子集?那么,让您的脚本访问它吗?

或者,您可能想看看Perl中的几个只读模块。我在考虑像Acme::EyeDropsAcme::Bleach这样的东西,它们可以从您的Perl脚本中删除所有难看的字母和数字。(我想知道为什么Python程序员说Perl是不可读的?)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8334338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档