这是我的剧本:
#!/bin/bash
for i in $(cat usernames.txt)
do
echo $i
useradd $i -m -s /bin/bash $i -G groupy $i
passwd=echo "password" | passwd $i
passwd -e $i
echo "User must change password when they come back"
done
它应该做的是:
使用主目录文件中给定的名称创建用户
他们的密码将是默认的“密码”,下次登录时必须更改它
将它们放入一个名为“groupy”的组中,该组已经创建
这只是一门课的练习,我们大部分时间都只是读章节。我们的老师想让我们尝试一下,但是我们读的那一章与这种脚本的构建无关。我真的不确定我做错了什么。有谁能指出我做错了什么和/或把我引向正确的方向吗?
我继续将其作为输出:
passwd: user 'wworthington' does not exist
./myscript: line 8: password: command not found
passwd: Permission denied.
User must change password when they come back
最佳答案
看起来你最直接的问题是权限。未创建用户“wworthington”,这意味着useradd
不起作用。大多数系统要求您以超级用户身份运行,或者以root
身份登录,或者使用sudo
命令运行useradd
和passwd
等管理命令(有关详细信息,请参阅intro to sudo)。passwd
可以由普通用户为自己的帐户运行,也可以由超级用户为任何用户帐户运行(请参见passwd man page)。
此外,passwd=echo "password" | passwd $i
将一个名为passwd
的变量设置为echo
,然后运行一个不存在的命令"password"
将空(空)输出管到passwd $i
。您可以将user$i
的密码设置为“password”,并分别使用useradd
和-p
选项在-e
命令中设置到期日期(请参见useradd man page)。这两个选项都要求在选项标记后有一个值(就像您对-G groupy
和-s /bin/bash
所做的那样)。
关于linux - passwd命令提示用户不存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35529722/