应该如何为/ etc / shadow创build一个encryption的密码?

我正在Linux上为Subversion版本库访问设置一个新账户,并且可以将密码发送给新用户。 不过,我认为这个新用户有一个命令行实用工具,可以将他喜欢的密码encryption成可以直接复制/粘贴到/ etc / shadow文件的格式。

这个新用户应该在控制台(例如Bash)上运行以创build如此encryption的密码的完整命令是什么?

更新:用户将不被允许在机器上login,并且该帐户将仅用于svn + ssh://访问。 因此,用户不能自己改变它。

用户可以在他的电脑上执行如下操作:

echo "password"|openssl passwd -1 -stdin 

然后发送给你的输出。

密码中的密码格式可能会有所不同。 您可以将其设置为MD5或旧的DES3或…您很好地向您的用户发送密码并迫使她在第一次login时更改密码( # chage -d 0 username

不要让他们encryption密码并发送给你,为什么不告诉他们键入:

 passwd 

它会做你想要的一切,增加的优势,他们可以改变他们的密码,没有任何额外的工作给你。

编辑:据此,有一个名为makepassword的命令,你可以得到Debian / Ubuntu。

/ etc / passwd和/ etc / shadow是非常容易使用通常的命令行工具(即grep,awk,sed,tr等)标记的。

有趣的是/ etc / shadow中的实际密码哈希字段,它的前缀告诉你密码是如何被encryption的。 从人(5)影子:

 The password field must be filled. The encrypted password consists of 13 to 24 characters from the 64 characters alphabet a thru z, A thru Z, 0 thru 9, \. and /. Optionally it can start with a "$" character. This means the encrypted password was generated using another (not DES) algorithm. For example if it starts with "$1$" it means the MD5-based algorithm was used. 

它是如何被广泛encryption的,取决于安装的操作系统到底有多大。 特别要注意/ etc / shadow中的第二个字段。

你应该尽一切努力来跟踪系统使用的任何散列,无论是DES,MD5等,因为它很容易被发现。

为什么SU不能进入用户并运行passwd?

有没有办法通过命令行生成密码? 是的,用debian软件包makepasswd(但仅限于MD5):

 echo "mypasswd" | makepasswd --crypt-md5 $1$r2elYKyB$vUr/Ph.brKTldM2h2k8J5. 

但是这不会通过复制粘贴在/ etc / shadow里面。要通过一些linux发行版本的脚本来更改密码,你可以使用:

 echo oracle:mypasswd | chpasswd 

要么

 echo -n mypasswd | passwd --stdin oracle