我使用以下脚本来更改 Open Directory(Apple 的 LDAP)密码。
我不喜欢在脚本中留下实际的密码——有什么方法可以隐藏或伪装它,以便其他用户可以使用该脚本,但他们却看不到密码?
#!/bin/bash
PATH=/bin:/usr/bin:/sbin:/usr/sbin export PATH
echo
echo Enter username you\'d like to change password for:
read USERNAME
echo
echo Enter New Password for "$USERNAME"
read PASSWORD
dscl -u diradmin -P 'secretpasswordhere' /LDAPv3/127.0.0.1 passwd /Users/$USERNAME $PASSWORD
echo Password successfully changed for $USERNAME to $PASSWORD
答案1
您可以让脚本以 Set-GID 的形式运行,然后从受此组保护的文件中获取密码信息。该组当然应该具有有限的访问权限和成员资格。这是一个非常简单的答案。
另一个想法是让用户输入脚本中包含的加密密码的解密代码。这样只有授权用户(拥有解密代码的用户)才能运行该脚本。
答案2
看一下shc
http://www.thegeekstuff.com/2012/05/encrypt-bash-shell-script/
The whole logic behind the shc is to convert the random.sh
shell script to random.sh.x.c C program (and of course compile that
to generate the random.sh.x executable)
- random.sh 是原始未加密的 shell 脚本
- random.sh.x 是二进制格式的加密 shell 脚本
- random.sh.xc 是 random.sh 文件的 C 源代码。此 C 源代码经过编译,创建了上述加密的 random.sh.x 文件。