CentOS 7环境下大量创建账号的方法
1 一些账号相关的检查工具
1.1 pwck命令
pwck 这个指令在检查 /etc/passwd 这个账号配置文件内的信息,与实际的家目录是否存在等信息,还可以比对 /etc/passwd /etc/shadow 的信息是否一致,另外,如果 /etc/passwd 内的数据字段错误时,会提示使用者修订。

上面仅是告知我,这些账号并没有家目录,由于那些账号绝大部分都是系统账号,确实也不需要家目录的,所以,那是正常的错误!
1.2 pwconv命令
这个指令主要的目的是在将 /etc/passwd 内的账号与密码,移动到 /etc/shadow 当中!
使用 pwconv 后,可以:
• 比对 /etc/passwd 及 /etc/shadow ,若 /etc/passwd 内存在的账号并没有对应的 /etc/shadow 密码时,则 pwconv 会去 /etc/login.defs 取用相关的密码数据,并建立该账号的 /etc/shadow 数据;
• 若 /etc/passwd 内存在加密后的密码数据时,则 pwconv 会将该密码栏移动到 /etc/shadow 内,并将原本的/etc/passwd 内相对应的密码栏变成 x !
一般来说,如果您正常使用 useradd 增加使用者时,使用 pwconv 并不会有任何的动作,因为/etc/passwd 与 /etc/shadow 并不会有上述两点问题。
1.3 pwunconv命令
pwunconv 则是将 /etc/shadow 内的密码栏数据写回 /etc/passwd 当中, 并且删除 /etc/shadow 文件。这个指令说实在的,最好不要使用。
1.4 chpasswd命令
chpasswd 可以读入未加密前的密码,并且经过加密后, 将加密后的密码写入 /etc/shadow 当中。这个指令很常被使用在大量建置账号的情况中。他可以由 标准输入中读入数据,每笔数据的格式是『 username:password 』。 举例来说,我的系统当中有个用户账号为 vbird3 ,我想要更新他的密码 , 假如他的密码是 abcdefg 的话,那么我可以这样做:

在预设的情况中, chpasswd 会去读取 /etc/login.defs 文件内的加密机制,我们 CentOS 7.x 用的是 SHA512, 因此 chpasswd 就预设会使用 SHA512 来加密!如果你想要使用不同的加密机制,那就得要使用 -c 以及 -e 等方式来处理了。 不过从 CentOS 5.x 开始之后,passwd 已经默认加入了 --stdin 的选项,因此这个 chpasswd 就变得英雄无用武之地了,不过,在其他非 Red Hat 衍生的 Linux 版本中,或许还是可以参考这个指令功能来大量建置账号。
2.大量建置账号模板(适用 passwd --stdin 选项)
一个简单的 script 来执行新增用户的功能:
#!/bin/bash
# This shell script will create amount of linux login accounts for you.
# 1. check the "accountadd.txt" file exist? you must create that file manually.
# one account name one line in the "accountadd.txt" file.
# 2. use openssl to create users password.
# 3. User must change his password in his first login.
# 4. more options check the following url: export PATH=/bin:/sbin:/usr/bin:/usr/sbin # 0. userinput
usergroup="" # if your account need secondary group, add here.
pwmech="openssl" # "openssl" or "account" is needed.
homeperm="no" # if "yes" then I will modify home dir permission to 711 # 1. check the accountadd.txt file
action="${1}" # "create" is useradd and "delete" is userdel.
if [ ! -f accountadd.txt ]; then
echo "There is no accountadd.txt file, stop here."
exit 1
fi
[ "${usergroup}" != "" ] && groupadd -r ${usergroup}
rm -f outputpw.txt
usernames=$(cat accountadd.txt)
for username in ${usernames}
do
case ${action} in
"create")
[ "${usergroup}" != "" ] && usegrp=" -G ${usergroup} " || usegrp=""
useradd ${usegrp} ${username} # 新增账号
[ "${pwmech}" == "openssl" ] && usepw=$(openssl rand -base64 6) || usepw=${username}
echo ${usepw} | passwd --stdin ${username} # 建立密码 chage -d 0 ${username} # 强制登入修改密码 [ "${homeperm}" == "yes" ] && chmod 711 /home/${username} echo "username=${username}, password=${usepw}" >> outputpw.txt
;;
"delete")
echo "deleting ${username}"
userdel -r ${username}
;;
*)
echo "Usage: $0 [create|delete]"
;;
esac
done
接下来只要建立 accountadd.txt 这个文件即可。内容每一行一个账号。 而是否需要修改密码?是否与账号相同的信息等等,你可以自由选择!若使用 openssl 自动猜密码时,用户的密码请由 outputpw.txt 去找。
CentOS 7环境下大量创建账号的方法的更多相关文章
- 20181225-Linux Shell Bash环境下自动化创建ssh互信脚本
20181225-Linux Shell Bash环境下自动化创建ssh互信脚本 1. 我的Blog 博客园 https://www.cnblogs.com/piggybaba/ 个人网站 http: ...
- 【简书】在阿里云自带的CentOS + LAMP环境下部署一个Laravel项目
在阿里云自带的CentOS + LAMP环境下部署一个Laravel项目 作者 DonnieZero 关注 2017.07.29 22:02* 字数 2218 阅读 5556评论 3喜欢 1赞赏 1 ...
- Centos 7环境下安装配置Hadoop 3.0 Beta1简记
前言 由于以前已经写过一篇Centos 7环境下安装配置2.8的随笔,因此这篇写得精简些,只挑选一些重要环节记录一下. 安装环境为:两台主机均为Centos 7.*操作系统,两台机器配置分别为: 主机 ...
- Centos 7环境下安装配置MySQL 5.7
安装步骤为: 1.由于Centos 7版中已经移除MySQL rpm,因此需要到其官方网站上下载rpm,下载完成后,使用以下命令,来安装MySQL的rpm配置. rpm -ivh *****[注释:* ...
- CentOS 7 环境下修改主机名
本篇文章简单介绍在CentOS 7的环境下更改主机名的方法步骤. 首先我们开启虚拟机,用root账户进行登陆,并且打开终端.我们看到默认的主机名是我们新建虚拟机时自定义的名称. 接下来我们用命令更改主 ...
- Centos 7环境下配置MySQL 5.7读写分离
1.实验目的: 实现在Centos 7系统环境下,MySQL5.7读写分离. 2.实验条件: MySQL主服务器:Centos 7桌面环境,IP:10.10.11.31 MySQL从服务器:Cento ...
- Anaconda3+python3环境下如何创建python2环境(win+Linux下适用,同一个anaconda下py2/3共存)
本人之前已经在anaconda环境下已经安装了python3的环境,现在因为一些需求,要安装python2环境 1.打开anaconda的anaconda prompt查看当前环境: conda in ...
- eclipse环境下无法创建android virtual Devices(AVD)问题解决的方法汇总
首先,要在eclipse环境下成功的创建一个安卓虚拟机,须要有三项东西,第一就是eclipse,第二就是android SDK Manager,第三就是ADT,也就是eclipse环境下的一个安卓虚拟 ...
- centos 7环境下安装jdk
在此之前已经安装了xshell并能传输文件. 1.下载对应版本的jdk:jdk-8u191-linux-x64.tar.gz 2.上传到centos的目录下 3.解压jdk的gz包,命令: tar - ...
随机推荐
- 我是如何从零开始自学转行IT并进入世界500强实现薪资翻倍?
本部分内容对应视频链接. 熟悉我的朋友应该知道,我本科及硕士期间所学的专业都是机械相关,毕业两年之后才从零开始自学转行成为一名程序员.当时我写了一篇文章,介绍我的转行经历,很多小伙伴因为我的这篇文章, ...
- 算法数据结构 | 只要30行代码,实现快速匹配字符串的KMP算法
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是算法数据结构专题的第29篇文章,我们来聊一个新的字符串匹配算法--KMP. KMP这个名字不是视频播放器,更不是看毛片,它其实是由Kn ...
- CSV文件指定页脚
https://www.cnblogs.com/zhangxinqi/p/9231801.html 2020-06-15
- PHP array_replace_recursive() 函数
实例 递归地使用第二个数组($a2)的值替换第一个数组($a1)的值: <?php$a1=array("a"=>array("red")," ...
- PHP restore_exception_handler() 函数
定义和用法 restore_exception_handler() 函数恢复之前的异常处理程序. 该函数用于在通过 set_exception_handler() 函数改变后恢复之前的异常处理程序. ...
- PHP restore_error_handler() 函数
定义和用法 restore_error_handler() 函数恢复之前的错误处理程序. 该函数用于在通过 set_error_handler() 函数改变后恢复之前的错误处理程序. 该函数总是返回 ...
- 小甲鱼零基础汇编语言学习笔记第二章之寄存器(CPU工作原理,CPU内部通讯)
这一章主要介绍了CPU中的重要器件——寄存器,整个系列通篇是以8086CPU作为探讨对象,其它更高级的CPU都是在此基础之上进行的升级. 1.一个典型的CPU是由运算器.控制器.寄存器等器件组成, ...
- Skill 脚本演示 ycNetToPin.il
https://www.cnblogs.com/yeungchie/ ycNetToPin.il 通过选中一个 instance ,分析与其连接且同时选中的 wire 上含有的 netName ,自动 ...
- Pintech品致全新多功能MDO 704E系列示波器全新推出
2020年 7月,Pintech品致全新推出推出首款具有多个模拟通道和多个数字通道的示波器.每个模拟通道带宽为200 MHz,每个模拟通道采样率同时达1 GSa/s,在一台仪器中,实现精确.可重复的. ...
- 关于c/c++中的二维数组与指针
设a是一个一维数组的数组名,则a表示其第一个元素的地址(即&a[0]),而&a表示整个数组的地址!尽管两者值相同(&a[0]==&a),因此&a是地址,*(&a ...