这是我的剧本:

#!/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命令运行useraddpasswd等管理命令(有关详细信息,请参阅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/

10-12 20:57