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

sh/bash/dash/ksh/zsh等Shell脚本
回复
xiangpi1860
帖子: 8
注册时间: 2010-04-29 8:58

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

#1

帖子 xiangpi1860 » 2010-06-23 9:28

最近学习鸟哥的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命令不能建立用户家目录,登录时不方便,该怎么做呢?
上次由 xiangpi1860 在 2010-06-27 9:35,总共编辑 2 次。
电影曦曦
帖子: 6
注册时间: 2010-06-23 19:28

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

#2

帖子 电影曦曦 » 2010-06-24 2:38

abc74233简繁发表于6小时前|只看该作者
头像
erol
帖子: 61
注册时间: 2010-05-16 23:17

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

#3

帖子 erol » 2010-06-25 21:25

先说一下你的问题:
改密码时调用了命令所不支持的参数
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 这几个用户的密码改成一样的?
伊吹风子的邻居常说:那孩子是个普通的地球人
头像
erol
帖子: 61
注册时间: 2010-05-16 23:17

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

#4

帖子 erol » 2010-06-25 21:30

参考: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.
伊吹风子的邻居常说:那孩子是个普通的地球人
头像
erol
帖子: 61
注册时间: 2010-05-16 23:17

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

#5

帖子 erol » 2010-06-25 22:21

经实验 在进行 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
# 
上次由 erol 在 2010-06-27 23:32,总共编辑 1 次。
伊吹风子的邻居常说:那孩子是个普通的地球人
xiangpi1860
帖子: 8
注册时间: 2010-04-29 8:58

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

#6

帖子 xiangpi1860 » 2010-06-27 9:32

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

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

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

#7

帖子 erol » 2010-06-28 1:29

为什么说useradd不能建目录啊
这不就建了

代码: 全选

$ ls /home
lost+found  wb  wry
$ sudo useradd -m xiaoming
$ ls /home
lost+found  wb  wry  xiaoming
$ 
伊吹风子的邻居常说:那孩子是个普通的地球人
xiangpi1860
帖子: 8
注册时间: 2010-04-29 8:58

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

#8

帖子 xiangpi1860 » 2010-06-28 9:16

嗯,呵呵..的确可以建的
谢谢哈
不过那个“--stdin”呢?
http://linux.vbird.org/linux_basic/0410 ... php#passwd
这个是鸟哥讲的passwd用法,里面讲到“--stdin”用法很重要
和大家同享并期待大家帮我解答
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

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

#9

帖子 tusooa » 2010-07-01 17:37

代码: 全选

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

代码: 全选

] ls -ld //
njzhiyuan
帖子: 32
注册时间: 2007-07-19 11:03

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

#10

帖子 njzhiyuan » 2011-12-22 14:19

echo 'username:password' | chpasswd
就行
头像
josephyoung
帖子: 158
注册时间: 2011-11-05 18:53
来自: 南极圈

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

#11

帖子 josephyoung » 2011-12-25 19:53

:em20 这坟挖得。。。passwd的--stdin参数ubuntu不支持,其实debian就不支持这个
upd
帖子: 1
注册时间: 2013-02-05 10:25
系统: Ubuntu 12.10

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

#12

帖子 upd » 2013-02-05 10:26

楼上正解
头像
lanni654321
帖子: 17
注册时间: 2010-10-26 21:21
系统: ubuntu
联系:

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

#13

帖子 lanni654321 » 2015-05-08 23:58

josephyoung 写了::em20 这坟挖得。。。passwd的--stdin参数ubuntu不支持,其实debian就不支持这个
哦 原来是这么回事啊,谢谢
sadiron
帖子: 7
注册时间: 2013-02-03 7:33
系统: Ubuntu 12.10

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

#14

帖子 sadiron » 2016-10-23 17:22

:Grimace 挖个坟。
我也在看这本书的时候遇到这个问题,用一个很简单粗暴的方法解决了:

代码: 全选

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

代码: 全选

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

代码: 全选

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