Linuxencryption的密码

我使用Linux命令useradd,我有问题。 我encryption的密码和添加用户,但不是把所有通过像:

密码:7856

encryption密码:$ 1 $ ky6XlX5g $ mu6Wva / vTJgZF9.p8tyAq /

示例: useradd -m -p '$1$ky6XlX5g$mu6Wva/vTJgZF9.p8tyAq/' username

我看影子文件,并不是所有的密码保存,只是一个encryption的密码片。

已保存的和平:/vTJgZF9.p8tyAq/

我需要完全的命令: useradd -m -p

这可能会解决你的问题…

 #!/bin/bash # Script to add a user to Linux system if [ $(id -u) -eq 0 ]; then read -p "Enter username : " username read -s -p "Enter password : " password egrep "^$username" /etc/passwd >/dev/null if [ $? -eq 0 ]; then echo "$username exists!" exit 1 else pass=$(perl -e 'print crypt($ARGV[0], "password")' $password) useradd -m -p $pass $username [ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!" fi else echo "Only root may add a user to the system" exit 2 fi 

你提到你正在使用PHP和SSH。 你确定你的系统没有试图评估$ky6XlX5g ,就像它是一个variables? PHP和Bash都使用这种语法,也许你没有正确地逃脱你通过SSH发送的命令。

我问这是因为我刚刚在我的本地系统上运行你的命令,它似乎工作完全一样。 我怀疑还有其他事情正在发生,而命令实际上没有正确传递。

 root@hostname:# useradd -m -p '$1$ky6XlX5g$mu6Wva/vTJgZF9.p8tyAq/' username root@hostname:# grep username /etc/shadow username:$1$ky6XlX5g$mu6Wva/vTJgZF9.p8tyAq/:15206:0:99999:7::: root@hostname:~ 

我认为你必须在添加之前解密它。 也许你可以使用python脚本来做到这一点。 您可以用下面的压缩技术replace您的encryption技术:

 import zlib import os def useradd(pass_string,username): password=zlib.decompress(pass_string) os.system('useradd -m -p'+password+' '+username) useradd('x\x9c3\xb705\x03\x00\x02(\x00\xdb',username) 

你可以通过在命令行上inputpython来获得该分析string,并且在解释器中可以input

 import zlib zlib.compress('7856') 

这将输出

 'x\x9c3\xb705\x03\x00\x02(\x00\xdb' 

希望是明确的。 您可以用您的encryption技术replacezlib压缩。