我编写了一个 shell 脚本来连接受密码保护的数据库。其他几个人希望使用相同的 shell 脚本来共享数据库访问权限,但我不想公开正在使用的密码。有没有一种方法可以锁定脚本,以便没有人可以读取它并且只能执行它?他们输入 sudo 密码来运行脚本也是理想的选择
有没有一种方法可以锁定脚本,这样就没有人可以读取它并且只能 执行它?他们输入 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 私钥)。
为了执行 shell 脚本,您必须能够读取它。您可以做以下几件事:
set -xv
运行脚本会怎样?然后,他们可以在脚本执行时看到密码。或者,您可能想看看 Perl 中的几个只读模块。我正在考虑像 Acme::EyeDrops 或 Acme::Bleach 这样的东西,它可以从 Perl 脚本中删除所有那些难看的字母和数字。 (我想知道为什么 Python 程序员说 Perl 不可读?)
这对我有用。尝试 1: - chmod 700specialFile - 或special_script 2: - chmod +t 特殊文件 ; ls -la 特殊文件注释 gecko
-rwx-----T 1 meUser meUser 123 十月 16 20:51 规格文件* 系统上没有其他帐户可以触及它 ls/cat/grep/sed/more 所有渲染权限都被拒绝。 深入了解 *Nix ACL 访问控制列表。 require ,acl, 添加到您的挂载点区域 ext4 Discard,noatime 1 1 --->chgToo---> ext4 Discard,acl,noatime 1 1 (仅显示文件“type or -t ext4”中条目的右侧 现在,FS 将检查每个 inode 权限,其深度和独特性但值得改进。 祝你好运。