linux中newusers与chpasswd批量添加用户的方法

发布时间:2020-02-21编辑:脚本学堂
本文介绍下,在linux中使用newusers批量添加用户的方法,以及chpasswd命令的用法,有需要的朋友可以参考下。

一、批量用户添加流程;
批量添中用户流程是通过newusers 导入一个严格按照/etc/passwd 的书写格式来书写内容的文件来完成添加用户。
然后通过chpasswd 导入用户密码文件来完成批量更新用户密码的过程;

1、newusers 成批添加用户的工具;
newusers 后面直接跟一个文件;文件格式和/etc/passwd 的格式相同;

用户名1:x:UID:GID:用户说明:用户的家目录:所用shell

举例:
 

复制代码 代码示例:
win00:x:520:520::/home/win00:/sbin/nologin
win01:x:521:521::/home/win01:/sbin/nologin
......

关于SHELL类型,查看主机上所有SHELL ,可以通过chsh 来查看;
 

复制代码 代码示例:
[root@jbxue beinan]# chsh --list
/bin/sh
/bin/bash
/sbin/nologin
/bin/ksh
/bin/tcsh
/bin/csh
/bin/zsh

其中除了/sbin/nologin ,其它类型的SHELL 都能登录系统;
nologin大多是虚拟用户用的SHELL,这样即便它是系统用户,也没有无登录系统的权限;
如果想添加这类用户,将其SHELL 设置成/sbin/nologin即可。

关于用户名、UID、GID及用户的家目录,可以参考如下的文章:
linux下查看用户及用户组的命令举例
有关linux用户和用户组管理的知识详解
实例学习Linux下新增与删除用户组
Linux用户与用户组详细教程
linux中的set uid,set gid,sticky bit详解
有关linux文件及目录的suid/guid和t属性

2、chpasswd 批量更新用户口令工具;
 

chpasswd 工具是成批更新用户口令的工具,是把一个文件内容重新定向添加到/etc/shadow中;
chpasswd < 文件

但文件的内容并不是没有约定的,必须以下面的格式来书写,并且不能有空行;
 

用户名:口令
用户名1:口令1
用户名2:口令2

举例:
 

复制代码 代码示例:
win00:123456
win01:654321
... ...

二、批量添加用户实例;

1、首先,创建用户文件和密码文件;
要创建包含新用户的文件userfile.txt;
另一个是为新添加的用户设置密码的userpwdfile.txt;
 

复制代码 代码示例:
[root@jbxue ~]# touch userfile.txt
[root@jbxue ~]# touch userpwdfile.txt

然后,用文本编辑器打开文件userfile.txt,添加如下内容;
 

复制代码 代码示例:
win00:x:520:520::/home/win00:/sbin/nologin
win01:x:521:521::/home/win01:/sbin/nologin
win02:x:522:522::/home/win02:/sbin/nologin
win03:x:523:523::/home/win03:/sbin/nologin
win04:x:524:524::/home/win04:/sbin/nologin
win05:x:525:525::/home/win05:/sbin/nologin
win06:x:526:526::/home/win06:/sbin/nologin
win07:x:527:527::/home/win07:/sbin/nologin
win08:x:528:528::/home/win08:/sbin/nologin
win09:x:529:529::/home/win09:/sbin/nologin

userfile.txt 文件内容格式和 /etc/passwd 的格式是一样的,必须严格按照/etc/passwd 的格式来书写;
上面所添加的用户都不能登录系统,但完全能用于ftp登录,但要在相应ftp服务器的配置文件中打开让本地用户有读写权限;
如果想让上面的部份用户可以登录系统,可以把SHELL类似改一改,比如改成/bin/bash ;

新增用户的密码文件userpwdfile.txt内容;
这个文件的内容中的用户名要与 userfile.txt用户名相同;
即先是添加了win00到win09的用户,现在要为这些用户更新密码;
比如下面的;
 

复制代码 代码示例:
win00:123456
win01:654321
win02:123321
win03:qweewq
win04:google
win05:adadwc
win06:wsscee
win07:xxec32
win08:543wew
win09:3ce3wf

2、通过newusers和chpasswd 完成批量添加用户;
 

复制代码 代码示例:
[root@jbxue ~]# newusers userfile.txt
[root@jbxue ~]# chpasswd < userpwdfile.txt

如果发现 /etc/passwd 用户有明口令,可以通过如下命令映射到 /etc/shadow文件名;
 

复制代码 代码示例:
[root@jbxue ~]# pwconv