跳到主要内容

linux批量添加用户

前言:与用户账号有关的系统文件

/etc/passwd:记录用户的基本属性

/etc/passwd中每行对应一个用户:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell

passwd中的字段含义
用户名
口令存放用户口令的加密串,但现在使用了shadow技术,把真正的加密后的用户口令字存放在/etc/shadow文件中,而/etc/passwd文件的口令字段中只存放一个特殊的字符,例如‘x’或者‘*’。
用户标识号用户标识号是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的,如果几个用户名对应的用户标识号是一样的,系统内部将把他们视为同一个用户,但是他们可以有不同的口令,不同的主目录以及不同的登录shell等。通常用户标识号的取值范围是0~65535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。
组标识号记录用户所属的用户组,对应着/etc/group文件中的一条记录
注释性描述一段任意编写的注释,创建账户时可以通过useradd –c 用户名的-c参数指定
主目录用户的起始工作目录,用户在登录到系统之后所处的目录。
登录shell用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即shell。shell是用户与Linux系统之间的接口。Linux的shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell),csh(C Shell),ksh(Korn Shell),tcsh(TENEX/TOPS-20 type C Shell),bash(Bourne Again Shell)等。可以通过usermod的-s参数为用户指定某个shell。如果useradd不通过-s参数指定shell,那么系统使用bash为默认的登录shell,即这个字段的值为/bin/bash。为用户的登录指定特定的shell可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。不过大部分Linux系统要求只有在系统中登记过的shell才能出现在这个字段中。
提示

伪用户(pseudo users)
伪用户的登录shell:/usr/sbin/nologin,即不能登录。他们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。

伪用户含义
bin拥有可执行的用户命令文件
sys拥有系统文件
adm拥有账户文件
uucpUUCP使用
lplp或lpd子系统使用
nobodyNFS使用

/etc/shadow:加密保存用户口令

  • 对安全性要求较高的Linux系统都把/etc/passwd文件中的口令字段保存在/etc/shadow文件中,超级用户才拥有该文件读权限。
  • /etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。
  • shadow中每行:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

shadow中的字段含义
登录名
口令存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{./0-9A-Za-z}中的字符,则对应的用户不能登录。
最后一次修改时间表示从某个时刻起,到用户最后一次修改口令的天数。大部分Linux系统的时间起点是1970年1月1日·。
最小时间间隔2次修改口令之间的最小天数
最大时间间隔口令保持有效的最大天数
警告时间从系统开始警告用户到用户密码正式失效之间的天数。
不活动时间用户没有登录活动但账号仍能保持有效的最大天数
失效时间该字段给出一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

/etc/group:记录用户组信息

  • 每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
  • 用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。
  • group中的字段:组名:口令:组标识号:组内用户列表

字段含义
组名
口令存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*
组标识号一个整数,被系统内部用来标识组
组内用户列表是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

实验步骤

# 准备文件user.txt和passwd.txt  

newusers < user.txt # 批量创建用户
pwunconv # 取消shadow加密
cat passwd.txt | chpasswd # 批量修改密码,激活用户
pwconv # 恢复shadow加密

1. 编辑用户文件user.txt

2. newusers命令批量创建用户

3. 检查/etc/passwd文件是否新增这些用户数据


4. pwunconv命令取消shadow password功能

5. 编辑密码对照文件passwd.txt

注意:文件内容不能有空行,否则等下批量修改密码时会提示“存在空行,忽略改动”,导致修改密码失败。

6. chpasswd命令批量修改密码

  • chpasswd:创建用户密码。会将经过/user/bin/passwd命令编码过的密码写入/etc/passwd的密码栏。
  • 需要在root用户下操作
  • chpasswd < passwd.txt语句错误,无法修改密码,可能原因是passwd.txt的内容没有正确传输给chpasswd。


7. pwconv命令恢复shadow passwd功能

  • pwconv命令将密码编码为shadow password,并将结果写入/etc/shadow



8. 登录验证用户权限与密码