Linux 使用服务器上的shell部署生成随机密码
当我运行我的自动部署脚本时,我正在尝试为我的各种配置文件和设置动态生成随机和安全的密码。我希望它们被生成,显示给用户,作为部署的一部分使用,然后被丢弃 这就是我要说的:Linux 使用服务器上的shell部署生成随机密码,linux,bash,shell,Linux,Bash,Shell,当我运行我的自动部署脚本时,我正在尝试为我的各种配置文件和设置动态生成随机和安全的密码。我希望它们被生成,显示给用户,作为部署的一部分使用,然后被丢弃 这就是我要说的: # FUNCTION TO GENERATE A RANDOM STRING function randpass() { [ "$2" == "0" ] && CHAR="[:alnum:]" || CHAR="[:graph:]" cat /dev/urandom | tr -cd "$CHAR"
# FUNCTION TO GENERATE A RANDOM STRING
function randpass() {
[ "$2" == "0" ] && CHAR="[:alnum:]" || CHAR="[:graph:]"
cat /dev/urandom | tr -cd "$CHAR" | head -c ${1:-32}
echo
}
$NOW = $(date +"%m-%d-%Y") || echo ="Time = $now"
$APPKEY = randpass(20) || echo "Secret key = $APPKEY"
read -p "Copied down?" -n1 -s
randpass()
中的潜在错误(我没有详细介绍),您正在显示密码,因此站在运行部署的用户旁边的任何人都会看到它。此外,运行部署脚本的用户是否与将使用应用程序的用户相同(并且需要密码)
从上面的1)和2)中可以看出,无论密码有多“安全”,协议也很重要,以至于randpass()
如何实际生成密码几乎是无关紧要的
一种常见的方法是提供初始密码(安全与否是另一回事),然后允许(非常)短的宽限期,在该宽限期内,用户可以根据自己的喜好更改该密码,如果在此期间未更改,则锁定该帐户。(这基本上就是passwd--expire--inactive 1
所做的。)
或者,让用户输入密码,而不是让他面对随机字符序列(因为上面的1)。通过read-s
将终端设置为无回声(这样密码就不会像键入的那样出现在屏幕上),让他重复密码以排除输入错误。因为,既然你可以让他先给你密码,为什么还要让他把你的随机密码改成其他密码呢
3) 不会。脚本完成后,所有设置的变量都将消失,除非您显式地将它们存储在某个位置
最后一个问题实际上是唯一可以肯定回答的问题,这就是为什么我现在要投票支持close 太棒了,谢谢你的邀请feedback@JamesWillson:在其中编辑了一些内容,因为它没有像我预期的那样快速关闭。;-)<代码>3)不确定。总是有可能将其交换到磁盘。@JohnB:…或者系统可能已通过加密交换或完全禁用交换进行了加固。你必须在偏执狂和理智之间的某个地方划清界限我认为没有必要否决这一点。是的,这不是真正的话题,可能应该以观点为基础来结束,但这个问题很好。真的,只有第一个问题是征求意见。第二个问题有点不明确。第三个问题似乎很好。