LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2044|回复: 5

关于passwd

[复制链接]
发表于 2003-4-10 10:00:35 | 显示全部楼层 |阅读模式
passwd命令的执行是交互式的,提示用户输入和确认密码。
root$ passwd usr1
input your passwd:
confir your passwd:
Change password for usr1 OK.

如何直接在命令行指定口令呢。passwd命令没有相应的开关。

我用 echo $password | passwd $username

倒是可以把第一次口令送入,但是提示第二次输入的密码不匹配,不能修改


不好意思,急,原在debian版面中发了一次。向版主道歉
发表于 2003-4-10 12:09:19 | 显示全部楼层
在我这个bsd里面第一个口令都送不进去。呵呵
发表于 2003-4-10 14:58:06 | 显示全部楼层
在我这个bsd里面第一个口令都送不进去。呵呵

BSD UNIX与Linux中输入口令的方式不同,BSD中口令是直接从/dev/tty中读入的,无法进行重定向。
发表于 2003-4-10 15:39:47 | 显示全部楼层
我在SuSE8.1和Debian上测试通过(我是在普通用户下,所以要先检证旧口令):
(sleep 1;echo "OLDPASSWD";sleep 1;echo "NEWPASSWD";sleep 1;echo "NEWPASSWD") | passwd


另外我发现在slackware上面和BSD一样,也不能进行重定向。
 楼主| 发表于 2003-4-10 16:18:15 | 显示全部楼层
谢谢! 成功了。

为什么呢?这个和shell特性有关吗?
发表于 2003-4-11 11:15:06 | 显示全部楼层
最初由 sword2k 发布
谢谢! 成功了。

为什么呢?这个和shell特性有关吗?

你是指在某些系统上不能使用的原因吗?
在一般的Linux上比如:Debian和SuSE等他们的passwd应用程序是从stdin读入用户的口令的,所以可以进行管道操作。而BSD和Slackware是从/dev/tty设置读入的所以无法使用管道,因为管道是将一个程序的stdout作为另一个程序的stdin,而BSD和Slackware的passwd根本就不从stdin读口令,所以管道就根本不起作用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表