作者:李 明
添加和删除用户对每位linux 系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd 一个一个地添加,必然要找一种简便创建大量用户的方法,Red Hat Linux 系统提供了创建大量用户的工具,可以让您立即建立大量用户,方法如下:
(1)先编辑一个文本用户文件,每一列按照/etc/passwd 密码文件的格式书写,要注意每个用户的用户名、UID、宿主目录都不可以相同,其中密码栏可以留作空白或打上x号,一个范例文件user.txt,内容如下:
user001::600:100:user:/home/user001:/bin/bash
user002::601:100:user:/home/user002:/bin/bash
user003::602:100:user:/home/user003:/bin/bash
user004::603:100:user:/home/user004:/bin/bash
user005::604:100:user:/home/user005:/bin/bash
user006::605:100:user:/home/user006:/bin/bash
.............................................
(2)以root 身份执行命令/usr/sbin/newusers,从刚建立的用户文件user.txt 导入数据,建立用户:
# newusers < user.txt
然后可以执行命令vipw 或vi /etc/passwd 检查/etc/passwd 文件,是否已经出现这些用户的数据,并且用户的宿主目录是否已经建立。
(3)执行命令/usr/sbin/pwunconv,将/etc/shadow 产生的shadow 密码解码,然后回写到/etc/passwd 中,并将/etc/shadow 的shadow 密码栏删掉。这是为了下一步骤的密码转换工作,即先取消shadow password 功能。
# pwunconv
(4)编辑每个用户的密码对照文件,一个范例文件passwd.txt,内容如下:
user001:密码
user002:密码
user003:密码
user004:密码
user005:密码
user006:密码
.............
(5)以root 身份执行命令/usr/sbin/chpasswd 建立用户密码,chpasswd 会将经过/usr/bin/passwd 指令编码过的密码写入/etc/passwd 的密码栏。
# chpasswd < passwd.txt
(6)确定密码经编码写入/etc/passwd 的密码栏后,执行命令/usr/sbin/pwconv 将密码编码为shadow password,并将结果写入/etc/shadow。
# pwconv
这样就完成了大量用户的创建了,之后您可以到/home 下检查这些用户宿主目录的权限设置是否都正确,并登录验证用户密码是否正确,这样就可以轻松地通过Red Hat Linux自带的工具建立大量用户。
您也可以使用大量建帐号的工具程序,如cmpwd,可从下面的网址下载得到: ftp://linux.tnc.edu.tw/pub/Sysop/ols3tools/cmpwd101.gz
要注意的是这个工具程序的作者仅提供该程序给非盈利的学术教育单位免费使用,其他单位或个人不能用于商业目的,而且此版本只适用于linux 平台。这里,笔者只想以此程序为例,让读者可以了解大量创建用户的脚本怎样去写。
通过上面创建大量用户的过程相信读者应该对在linux 下创建用户的流程已经有了一个系统的了解,正常情况下如果要写一个大量创建用户的脚本,采取的方法都是建立一个用户数据文件,而此数据文件必须依照字段排序好,然后管理员通过自己写的脚本,依照每个字段去读取这个数据文件的内容,依序建立用户。通常像这类要处理大量字符串的脚本通常使用perl 语言来编写,将已经建立好的用户名称、用户密码的数据文件读入,将结果写入/etc/passwd 与/etc/shadow 文件中。这种大量建立用户的脚本难度在于如何将已建立好的用户数据文件,依据/etc/passwd 的字段定义,一个一个地读入/etc/passwd文件中,并将password 的字段编码,最后通过pwconv 命令将数据转换到/etc/shadow 文件中。
至于脚本具体怎样去写这里不再详细介绍,让我们看一下cmpwd 这个工具程序的使用,希望可以给您一些启发。
安装方法:
(1)将cmpwd101.gz 下载解压(最好放在/root 目录中),并赋予可执行权限。
# gzip -d cmpwd101.gz
# chmod u+x cmpwd101
(2)在中文环境或.netterm 远程登录,以root 身份执行:
# ./cmpwd101
程序会弹出执行画面,然后进入交互式的询问模式:
学生或其它身份文字代码?(例: stu 或 tch 等)
user
学生年级?(例: 1 代表一年级,若是其它身份,可按Enter 不填)
起始学号?(例: 650,若是其它身份,可选用其它号码或按Enter 不填)
开始的使用者编号(uid)? 例: 600(uid 概念请您务必弄清楚!)
200
欲开设的账号数量?(例: 100 代表100 位使用者账号)
50
宿主目录位置? 例: /home(按Enter 预设为/home)
密码复杂度?(请输入1~6)
1 : 账号和密码相同,但不可用telnet 登入主机
2 : 账号和密码部分相同
3 : 密码统一
4 : 简易
5 : 中度
6 : 安全
2
建账完成!
...................
注意:新创建的用户密码均记录在您目前路径下的newpwd.txt 文件中,你可以查看此文件获得新创建用户的密码。
至此,使用该程序创建大量用户就完成了。需要说明的是,原程序这些提示信息为繁体中文,为了便于读者理解改为简体中文;另外,因为开发者是针对学校的应用开发,所以会有很多针对学生的设置。
如果您也是一个教育工作者,那么可能这个工具程序正是您所需要的,否则,您也可以模仿这个程序写一个适合于您当前应用的脚本。上面介绍了两种大量创建用户的方法,如果需要大量删除用户,我们可以从以下网址下载一工具程序ftp://linux.tnc.edu.tw/pub/Sysop/ols3tools/ols3delact-1.0.1.tar.gz
使用方法如下:
1.以root 身份登入系统,然后将程序解压解包,并给予两个脚本程序可执行权限,
如下所示:
# tar xvzf ols3delact-1.0.1.tar.gz
# chmod u+x ols3scandir.pl
# chmod u+x ols3delact.pl
2.然后执行命令:
# ./ols3scandir.pl /home
Please check the file: "dir_list" and run ./delact.pl
这个步骤用来扫描/home 下有哪些用户的宿主目录,注意,如果在您的系统中,用户宿主目录是建于其他目录之下,那么相应的把/home 目录改变为你所设置的存放用户宿主目录的目录下。之后,它会将用户宿主目录名称写入当前目录下的dir_list 文件中,您可以使用vi 来编辑它,将不想要删除的用户名称去掉。
3.执行./ols3delact.pl,即可根据dir_list 文件中的记录删除大量用户。这个工具程序会保护:/home/ftp、/home/httpd、/home/lost+found、/home/adm、 /home/webadm、/home/webmaster 等目录及用户,不会予以删除。如果您想添加其他特定的目录及用户,可以编辑ols3delact.pl 脚本。
它完成以下几件事:
a. 删除用户宿主目录
b. 备份/etc/passwd、/etc/shadow、/etc/group 配置文件
c. 将用户记录从/etc/passwd、/etc/shadow、/etc/group 文件中删除
注意:各个用户存放邮件的目录“var/spool/mail/用户名”并没有删除,如果您要实现此功能,可以自行修改该工具程序的脚本文件增加此功能。该程序自动备份/etc/passwd、/etc/shadow 、/etc/group 文件的格式为: /etc/passwd-YYYYMMDDhhmmss,如:/etc/passwd-20030106160410,shadow、group 文件与此相同。
通过这些方法大量添加、删除用户,可以大大提高网管工作的效率,如果您有兴趣,
不妨也试试。