passwd文件中的一个命令不工作(passwd in one command isn't

2019-09-19 06:52发布

我开发了一个工具使用JSch(用于与通过ssh其他机器进行通信的Java库)发送一个行命令,以不同的Linux机器在一杆

因此,我们的客户需要在所有机器上更改密码。 谷歌帮助我达到这一点:

echo -e "123\n123" | passwd username echo -e "123\n123" | passwd username如果“123”是新的密码。

该命令执行,但是这始终是输出:

[root@QNA-XR1 ~]# echo -e "123\n123" | passwd
Changing password for root
New password:
Retype password:
passwd: password for root is unchanged

这表明该命令没有成功。

请注意,这是在其上运行Linux的小型设备。 这是一个私人编译的版本,以尽可能紧凑。 我不知道很多关于Linux实际上!

这是机器的信息:

[root@QNA-XR1 ~]# uname -a
Linux QNA-XR1 2.6.22-XR100-v1.1.7 #1 Tue Aug 19 22:55:50 EDT 2008 ppc unknown

passwd的帮助:

[root@QNA-XR1 ~]# passwd --help
BusyBox v1.7.3 (2008-01-09 00:06:30 EST) multi-call binary

Usage: passwd [OPTION] [name]

Change a user password. If no name is specified,
changes the password for the current user.

Options:
        -a      Define which algorithm shall be used for the password
                (choices: des, md5)
        -d      Delete the password for the specified user account
        -l      Locks (disables) the specified user account
        -u      Unlocks (re-enables) the specified user account

回声帮助

[root@QNA-XR1 ~]# help echo
echo: echo [-neE] [arg ...]
    Output the ARGs.  If -n is specified, the trailing newline is
    suppressed.  If the -e option is given, interpretation of the
    following backslash-escaped characters is turned on:
        \a      alert (bell)
        \b      backspace
        \c      suppress trailing newline
        \E      escape character
        \f      form feed
        \n      new line
        \r      carriage return
        \t      horizontal tab
        \v      vertical tab
        \\      backslash
        \num    the character whose ASCII code is NUM (octal).

    You can explicitly turn off the interpretation of the above characters
    with the -E option.

非常感谢提前对您有所帮助。

Answer 1:

/bin/passwd可以是开口/dev/tty强制从一个终端,而不是管读数。

你可能会更好加密(散列,真的)您的新密码使用crypt()然后在更换密码哈希/etc/shadow (对于有它的系统)或/etc/passwd (对于不系统) 。 这具有一定程度上依赖于操作系统的缺点,但它并没有进入怪异的tty游戏。

您可能还能够迫使SSH一个tty的分配 - SSH既可以带或不带一个操作。 然后,你会增加几个延迟发送明文密码前两次 - 这方法不太依赖于操作系统,但TTY游戏可以小于乐趣的时候。



Answer 2:

您可以使用chpasswd的(如根,但它并不安全):

# echo "user:passwd" | chpasswd


Answer 3:

您可以使用单一命令来更改用户密码。

echo -e "password\npassword" | sudo -S passwd testuser



文章来源: passwd in one command isn't working