读取只能通过 Unix 脚本访问的文件

读取只能通过 Unix 脚本访问的文件

我编写了一个基本 shell 脚本,需要从文件中检索密码/密钥。

基本脚本---调用---密钥/密码文件---基本脚本使用检索到的密钥进行进一步身份验证

要求:

  1. 任何用户都不应能够直接获取文件的内容

  2. 每个用户都应该能够执行基本脚本

  3. 只应允许脚本访问文件的内容

欢迎使用任何人都看不到但可在脚本中配置的密码/密钥的任何其他建议

注意:我尝试了 sudoers 方法但仍然没有成功

%usersgroup ALL=(root) NOPASSWD:/key/path

答案1

您应该创建一个包含密码的文件,该文件只能由 root 访问 - chown root, chmod 600。

您应该更改您的脚本以正常访问此文件(也许在那里获取变量?)并由 root 拥有,并且只能由其他用户读取/执行,不可编辑 - chown root,chmod 4755。

通常,您可以在脚本上启用 suid 就可以了,但是 Linux 已经禁用了脚本的 suid。下一步是添加 sudoers 行:

%usersgroup ALL=(root) NOPASSWD:/path/to/script

并要求用户使用 sudo 运行脚本。

答案2

我不确定这是否可行,但理论上是可行的!chmod 700 /path/to/key为了确保除了 bash 脚本之外没有人可以读取它,您可以在 /path/to/key 中拥有密码的加密版本,并让脚本进行解密,然后检查密码。当然,您需要在脚本中禁用非 root 用户的读取访问权限,以阻止他们破解代码并编辑代码以使脚本直接工作,因此请确保chmod 744 /path/to/script.然而,具有 root 访问权限的精明用户可以使用chmod并恢复我们所有的辛苦工作。因此,我们需要让脚本调用一些机器代码来进行解密,然后我们会意识到我们刚刚花了一个周末重新发明 DRM。我希望这回答了你的问题。供您参考,我反对 DRM(根据 EFF 和设计缺陷),但我认为重新发明它会很有趣。

相关内容