有人应该如何为/ etc / shadow创建加密密码?


9

我正在Linux机器上设置一个用于Subversion存储库访问的新帐户,并且可以将密码发送给新用户。但是,我认为该新用户有一个命令行实用程序,可以将他喜欢的密码加密为我可以直接复制/粘贴到/ etc / shadow文件中的格式。

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

更新:将不允许用户登录计算机,该帐户仅用于svn + ssh://访问。因此,用户不能自己更改它。


用户问有关bash脚本的问题,因为他显然不会手动执行此操作。
Tim Post

Answers:


15

用户可以在计算机上执行以下操作:

echo "password"|openssl passwd -1 -stdin

然后将输出发送给您。


+1确实可以满足您的需求。
Antoine Benkemoun

为什么每次我调用该命令时都会给出不同的值?
Egon Willighagen 09年

2
输出格式为$ id $ salt $ encrypted。不同的id和不同的salt为您提供不同的加密字符串。id是使用的算法:0-DES,1-> MD5、2a->河豚,5-> SHA-256、6
Gonzalo

好的,因此我需要弄清楚如何触发某个id(一直都是相同的)和salt(每次调用都会更改)...是有道理的。
Egon Willighagen 09年

2

阴影中的密码格式可以不同。您可以将其设置为MD5或较旧的DES3或...。您可以向用户发送密码,并强迫她在首次登录(# chage -d 0 username)时对其进行更改


1

与其让他们加密密码并将其发送给您,不如告诉他们键入密码:

passwd

它可以做您想做的所有事情,并具有额外的优势,即无需您进行任何额外工作即可更改密码。

编辑:根据这个,还有一个据说叫makepassword,你可以得到适用于Debian / Ubuntu的命令。


因为这要求用户已经登录。OP希望有一种解决方案,以便在用户首次登录之前安全地设置密码。
Daniel Pryden 09年

1
似乎随机生成密码并让他们在登录时更改密码与让他们生成密码并手动添加密码一样安全。
布伦丹·朗

用户实际上将永远不会登录(shell:/ bin / false),仅允许SVN读/写访问...
Egon Willighagen 09年

2
您可以设置shell:/ usr / bin / passwd:D
Brendan Long

1
我的意思是说,最后一个评论只是个玩笑,但显然可以奏效:markmail.org/message/ekuxvnhdagywy4i5
Brendan Long 2009年

0

/ etc / passwd和/ etc / shadow很容易使用常用的命令行工具(例如grep,awk,sed,tr等)来标记化。

变得有趣的是/ etc / shadow中的实际密码哈希字段,其前缀告诉您如何对密码进行加密。来自人(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.

对其进行广泛加密的方式取决于所安装操作系统的年代。重要的是要特别注意/ etc / shadow中的第二个字段。

由于它很容易检测,因此您应该尽一切努力跟踪系统正在使用的任何哈希,无论是DES,MD5等。



0

有没有办法通过命令行生成此密码?是的,使用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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.