想要只执行shell脚本

loc*_*boy 2 bash

我写了一个shell脚本来挂钩到受密码保护的数据库.其他几个想要使用相同的shell脚本来共享数据库访问,但我不想公开正在使用的密码.有没有办法锁定脚本,以便没有人可以读取它只执行它?它们也是输入sudo密码以运行脚本的理想选择

lar*_*sks 6

有没有办法锁定脚本,以便没有人可以读取它只执行它?它们也是输入sudo密码以运行脚本的理想选择

当然.假设包含凭据的脚本是/usr/local/bin/myscript.使此文件由特权用户拥有.假设我们有一个名为"凭据"的用户:

# chown credentials /usr/local/bin/myscript
# chmod 700 /usr/local/bin/myscript
Run Code Online (Sandbox Code Playgroud)

现在只有credentials用户可以读取并执行此脚本.

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

#!/bin/sh
exec sudo -u credentials /usr/local/bin/myscript
Run Code Online (Sandbox Code Playgroud)

并创建适当的/etc/sudoers条目:

auser   ALL=(credentials) /usr/local/bin/myscript
Run Code Online (Sandbox Code Playgroud)

所以现在,用户auser运行"mywrapper".这反过来用于sudo调用真实脚本,它将提示auser输入密码.

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