linux系统中怎样创建用户名和密码错误,Shell脚本创建linux用户帐户但密码出错

我编写了一个shell脚本来创建用户帐户.该脚本从文本文件中读取用户帐户名和密码,并使用这些信息创建帐户.当我执行脚本时,它成功创建了帐户,但是当我尝试登录这些帐户时由于密码无效而无法登录,请再次尝试错误.

这是我用来创建用户帐户的脚本:

file_name="t.txt"

while read user pass

do

useradd -p ${pass} ${user}

done < $file_name

编辑-1:

t.txt文件包含用户帐户信息:空格分隔的每行用户名和密码.这是文件的片段:

user1 abcXYZ

user2 DEFxyz

user3 ijkLMN

EDIT 2:

当我按照Steve Kline推荐的方法时,它会显示以下结果:(仍然无法使用给定的密码登录创建的帐户)

passwd: unrecognized option '--stdin'

Usage: passwd [options] [LOGIN]

Options:

-a, --all report password status on all accounts

-x, --maxdays MAX_DAYS set maximum number of days before password

change to MAX_DAYS

Adding user user1 with the password abcXYZ123

仍然无法使用给定密码登录创建的帐户

解决方法:

所以你当前的方法是在/ etc / shadow中添加明文密码.

按原样使用您的脚本…创建它.请注意,我在密码末尾添加了几位数字以匹配标准的8个字符,以抑制“你确定”的提示.

user1:abcXYZ123:16963:0:99999:7:::

user2:DEFxyz142:16963:0:99999:7:::

user3:ijkLM1564:16963:0:99999:7:::

用户文件

[root@localhost ~]# cat t.txt s.txt

user1 abcXYZ123

user2 DEFxyz142

user3 ijkLM1564

user4 abcXYZ123

user5 DEFxyz142

user6 ijkLM1564

剧本

#!/bin/bash -e

#Adding user1, user2, user3 using your method.

file_name="t.txt"

while read user pass

do

#useradd ${user} -p ${pass}

useradd -p ${pass} ${user}

echo "Adding user "${user}" with the password "${pass}

done < $file_name

#Adding user4, user5, user6 using the recommended method.

file_name="s.txt"

while read user pass

do

#useradd ${user} -p ${pass}

useradd ${user}

echo "${pass}" | passwd --stdin ${user}

echo "Adding user "${user}" with the password "${pass}

done < $file_name

使用这两种语法,在/ etc / shadow中生成了这些结果

user1:abcXYZ123:16963:0:99999:7:::

user2:DEFxyz142:16963:0:99999:7:::

user3:ijkLM1564:16963:0:99999:7:::

user4:$1$NpazYQAn$tlhfQLlP0CaFiUeNeK8HW.:16963:0:99999:7:::

user5:$1$4z8G4gvh$v0jzcV5xbhWixU1LG9mwW.:16963:0:99999:7:::

user6:$1$cBkcYJkJ$7A.j6E3gy/umUcVmY0tgt0:16963:0:99999:7:::

因此,我发布的方法是有效的.更新:Ubuntu工作方法如下.这个stdin被确认用于基于Rhel的系统.

useradd ${user}

echo "${pass}" | passwd --stdin ${user}

如果您的心脏完全使用该方法,我建议安装mkpasswd并使用此语法.

useradd -p $(mkpasswd ${pass}) ${user}

更新Ubuntu Passwd stdin

echo ${user}:${pass} | /usr/sbin/chpasswd

标签:bash,authentication,shell,linux

来源: https://codeday.me/bug/20190628/1311136.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值