分页: 1 / 1

请教有关 passwd --stdin的用法(未解决)

发表于 : 2010-06-23 9:28
xiangpi1860
最近学习鸟哥的passwd用法时练习建立账号并修改密码(密码统一为“password”),程序如下
#!/bin/bash
groupadd myquotagrp
for username in myquota1 myquota2 myquota3 myquota4 quota5
do
useradd -g myquotagrp $username
echo "password" | passwd --stdin $username
done
运行后报错
passwd: unrecognized option '--stdin'
Usage: passwd [options] [LOGIN]

Options:
-a, --all report password status on all accounts
-d, --delete delete the password for the named account
-e, --expire force expire the password for the named account
-h, --help display this help message and exit
-k, --keep-tokens change password only if expired
-i, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-l, --lock lock the password of the named account
-n, --mindays MIN_DAYS set minimum number of days before password
change to MIN_DAYS
-q, --quiet quiet mode
-r, --repository REPOSITORY change password in REPOSITORY repository
-S, --status report password status on the named account
-u, --unlock unlock the password of the named account
-w, --warndays WARN_DAYS set expiration warning days to WARN_DAYS
-x, --maxdays MAX_DAYS set maximim number of days before password
change to MAX_DAYS

我又查了下passwd的用法,虽然不是很懂,但尝试了openssl passwd -stdin
还是报错:
Usage: passwd [options] [passwords]
where options are
-crypt standard Unix password algorithm (default)
-1 MD5-based password algorithm
-apr1 MD5-based password algorithm, Apache variant
-salt string use provided salt
-in file read passwords from file
-stdin read passwords from stdin
-noverify never verify when reading password from terminal
-quiet no warnings
-table format output as table
-reverse switch table columns

特此请大家帮忙解答,顺便能否讲解下那个 openssl passwd 的用法?谢谢
在后续过程中发现useradd命令不能建立用户家目录,登录时不方便,该怎么做呢?

Re: 请教有关 passwd --stdin的用法

发表于 : 2010-06-24 2:38
电影曦曦
abc74233简繁发表于6小时前|只看该作者

Re: 请教有关 passwd --stdin的用法

发表于 : 2010-06-25 21:25
erol
先说一下你的问题:
改密码时调用了命令所不支持的参数
openssl passwd 不是用来改密码的
变量passwd 没有赋值就使用,汗

以root执行

代码: 全选

#!/bin/bash
groupadd myquotagrp
read passwd1
for username in myquota1 myquota2 myquota3 myquota4 quota5
do
useradd -g myquotagrp $username
echo "$username:$passwd1"| chpasswd
done

难道你是要把 myquota1 myquota2 myquota3 myquota4 quota5 这几个用户的密码改成一样的?

Re: 请教有关 passwd --stdin的用法

发表于 : 2010-06-25 21:30
erol
参考:http://www.fallday.org/archives/532
使用passwd选项,你可以得到一个类似/etc/passwd或者/etc/shadow格式的密码。
1、创建一个crypt-style密码

QUOTE:

$ openssl passwd MySecret
8E4vqBR4UOYF

如果知道已经存在密码的“salt”,可以复制其hash:

QUOTE:

$ openssl passwd -salt 8E MySecret
8E4vqBR4UOYF.

否则,即使相同的密码,因每次的hash不同,结果也不同的。
2、创建一个shadow-style的密码
新的Unix系统(包括linux),都使用安全的MD5-based来作为salt,可以这样产生类似的密码:

QUOTE:

$ openssl passwd -1 MySecret
$1$HkrAilcM$Jy3vYQc8UiEXfTLRrlSpD.

而slat在二到三$符号之间,所以有:

QUOTE:

$ openssl passwd -1 -salt HkrAilcM MySecret
$1$HkrAilcM$Jy3vYQc8UiEXfTLRrlSpD.

Re: 请教有关 passwd --stdin的用法

发表于 : 2010-06-25 22:21
erol
经实验 在进行 echo "user1:passwd1"|chpasswd 时
用sudo是不够的
必须是命令提示符是#的时候

代码: 全选

$ sudo echo "wry:wrydemima"| chpasswd
更改 wry 的密码。
chpasswd: (user wry) pam_chauthtok() failed, error:
认证令牌操作错误
chpasswd: (line 1, user wry) password not changed
$ sudo -i
# echo "wry:wrydemima"| chpasswd
# 

Re: 请教有关 passwd --stdin的用法

发表于 : 2010-06-27 9:32
xiangpi1860
[quote="erol"]先说一下你的问题:
改密码时调用了命令所不支持的参数
openssl passwd 不是用来改密码的
变量passwd 没有赋值就使用,汗

首先很感谢这位哥们的回复,而且按照你的做法,的确可以创建这组用户并修改密码
是我当时没说明白,我的确想把这5个人的密码都设为“passwd”
还想请教一下 那鸟哥书上写的 --stdin 为什么是命令不支持的参数呀?是版本问题还是其他什么问题呀?
顺便抱怨下useradd这个命令,创建成功了也不能顺便创建各用户的家目录,导致登录不方便
adduser这个命令很好用,但不能批量加用户,很苦恼
请大家指教
还有,很感谢erol这位哥们关于openSSL的介绍,受教了,呵呵..谢谢哈

Re: 请教有关 passwd --stdin的用法(未解决)

发表于 : 2010-06-28 1:29
erol
为什么说useradd不能建目录啊
这不就建了

代码: 全选

$ ls /home
lost+found  wb  wry
$ sudo useradd -m xiaoming
$ ls /home
lost+found  wb  wry  xiaoming
$ 

Re: 请教有关 passwd --stdin的用法(未解决)

发表于 : 2010-06-28 9:16
xiangpi1860
嗯,呵呵..的确可以建的
谢谢哈
不过那个“--stdin”呢?
http://linux.vbird.org/linux_basic/0410 ... php#passwd
这个是鸟哥讲的passwd用法,里面讲到“--stdin”用法很重要
和大家同享并期待大家帮我解答

Re: 请教有关 passwd --stdin的用法(未解决)

发表于 : 2010-07-01 17:37
tusooa

代码: 全选

echo -e "password\npassword" | passwd <UserName>

Re: 请教有关 passwd --stdin的用法(未解决)

发表于 : 2011-12-22 14:19
njzhiyuan
echo 'username:password' | chpasswd
就行

Re: 请教有关 passwd --stdin的用法(未解决)

发表于 : 2011-12-25 19:53
josephyoung
:em20 这坟挖得。。。passwd的--stdin参数ubuntu不支持,其实debian就不支持这个

Re: 请教有关 passwd --stdin的用法(未解决)

发表于 : 2013-02-05 10:26
upd
楼上正解

Re: 请教有关 passwd --stdin的用法(未解决)

发表于 : 2015-05-08 23:58
lanni654321
josephyoung 写了::em20 这坟挖得。。。passwd的--stdin参数ubuntu不支持,其实debian就不支持这个
哦 原来是这么回事啊,谢谢

Re: 请教有关 passwd --stdin的用法(未解决)

发表于 : 2016-10-23 17:22
sadiron
:Grimace 挖个坟。
我也在看这本书的时候遇到这个问题,用一个很简单粗暴的方法解决了:

代码: 全选

echo "password" | passwd --stdin $username
改为

代码: 全选

echo "password\npassword" | passwd $username
因为看到

代码: 全选

passwd $username
是使用两次输入密码来确认密码的,便想用\n模拟回车的效果,结果真成了。