最近升级日期:2009/09/09
7. 手动新增使用者
7.1 一些检查工具:pwck, pwconv, pwunconv, chpasswd 7.2 特殊账号,如纯数字账号的手工创建 7.3 大量建置账号模板(适用 passwd --stdin 选项) 7.4 大量建置账号的范例(适用于连续数字,如学号) ![]() 一般来说,我们不很建议大家使用手动的方式来新增使用者,为什么呢? 因为使用者的创建涉及到 GID/UID 等权限的关系,而且,与文件/目录的权限也有关系, 使用 useradd 可以帮我们自动配置好 UID/GID 家目录以及家目录相关的权限配置, 但是,手动来添加的时候,有可能会忘东忘西,结果导致一些困扰的发生。 不过,要了解整个系统,最好还是手动来修改过比较好,至少我们的账号问题可以完全依照自己的意思去修订,
而不必迁就于系统的默认值啊!但是,还是要告诫一下朋友们,要手动配置账号时,
您必须要真的很了解自己在作什么,尤其是与权限有关的配置方面喔!好吧!底下就让我们来玩一玩啰~ ^_^ ![]() 既然要手动修改账号的相关配置文件,那么一些检查群组、账号相关的命令就不可不知道啊~
尤其是那个口令转换的 pwconv 及 pwuconv 这两个玩意~可重要的很呢!底下我们稍微介绍一下这些命令吧!
pwck 这个命令在检查 /etc/passwd 这个账号配置文件内的信息,与实际的家目录是否存在等信息, 还可以比对 /etc/passwd /etc/shadow 的信息是否一致,另外,如果 /etc/passwd 内的数据字段错误时,会提示使用者修订。 一般来说,我只是利用这个玩意儿来检查我的输入是否正确就是了。
瞧!上面仅是告知我,这些账号并没有家目录,由于那些账号绝大部分都是系统账号,
确实也不需要家目录的,所以,那是『正常的错误!』呵呵!不理他。 ^_^。
相对应的群组检查可以使用 grpck 这个命令的啦!
这个命令主要的目的是在『将 /etc/passwd 内的账号与口令,移动到 /etc/shadow 当中!』 早期的 Unix 系统当中并没有 /etc/shadow 呢,所以,用户的登陆口令早期是在 /etc/passwd 的第二栏,后来为了系统安全,才将口令数据移动到 /etc/shadow 内的。使用 pwconv 后,可以:
一般来说,如果您正常使用 useradd 添加使用者时,使用 pwconv 并不会有任何的动作,因为 /etc/passwd 与
/etc/shadow 并不会有上述两点问题啊! ^_^。不过,如果手动配置账号,这个 pwconv 就很重要啰!
相对于 pwconv , pwunconv 则是『将 /etc/shadow 内的口令栏数据写回 /etc/passwd 当中,
并且删除 /etc/shadow 文件。』这个命令说实在的,最好不要使用啦!
因为他会将你的 /etc/shadow 删除喔!如果你忘记备份,又不会使用 pwconv 的话,粉严重呢!
chpasswd 是个挺有趣的命令,他可以『读入未加密前的口令,并且经过加密后, 将加密后的口令写入 /etc/shadow 当中。』这个命令很常被使用在大量建置账号的情况中喔! 他可以由 Standard input 读入数据,每笔数据的格式是『 username:password 』。 举例来说,我的系统当中有个用户账号为 dmtsai ,我想要升级他的口令 (update) , 假如他的口令是 abcdefg 的话,那么我可以这样做:
神奇吧!这样就可以升级了呢!在默认的情况中, chpasswd 使用的是 DES 加密方法来加密, 我们可以使用 chpasswd -m 来使用 CentOS 5.x 默认的 MD5 加密方法。这个命令虽然已经很好用了,不过 CentOS 5.x 其实已经提供了『 passwd --stdin 』的选项,老实说,这个 chpasswd 可以不必使用了。但考虑其他版本不见得会提供 --stdin 给 passwd 这个命令,所以您还是得要了解一下这个命令用途! ![]() 在我们了解了 UID/GID 与账号的关系之后,基本上,您应该了解了,为啥我们不建议使用纯数字的账号了!因为很多时候,系统会搞不清楚那组数字是『账号』还是『 UID 』,这不是很好啦~也因此,在早期某些版本底下,是没有办法使用数字来创建账号的。例如在 Red Hat 9 的环境中, 使用『 useradd 1234 』他会显示『 useradd: invalid user name '1234' 』了解了吗?
不过,有的时候,长官的命令难为啊 @_@ 有时还是得要创建这方面的账号的,那该如何是好? 呵呵!当然可以手动来创建这样的账号啦!不过,为了系统安全起见,鸟哥还是不建议使用纯数字的账号的啦! 因此,底下的范例当中,我们使用手动的方式来创建一个名为 normaluser 的账号, 而且这个账号属于 normalgroup 这个群组。OK!那么整个步骤该如何是好呢? 由前面的说明来看,您应该了解了账号与群组是与 /etc/group, /etc/shadow, /etc/passwd, /etc/gshadow 有关,因此,整个动作是这样的:
别怀疑!这样就搞定了一个账号的配置了! 从此以后,你可以创建任何名称的账号啰~不过,还是不建议您配置一些很怪很怪的账号名称啦! ![]() 由于 CentOS 5.x 的 passwd 已经提供了 --stdin 的功能,因此如果我们可以提供账号口令的话, 那么就能够很简单的建置起我们的账号口令了。底下鸟哥制作一个简单的 script 来运行新增用户的功能喔!
接下来只要创建 account1.txt 这个文件即可!鸟哥创建这个文件里面共有十行,你可以自行创建该文件! 内容每一行一个账号。注意,最终的结果会是每个账号具有与账号相同的口令,且初次登陆后, 必须要重新配置口令后才能够再次登陆使用系统资源!
这支简单的脚本你可以在按如下的连结下载: 另外,鸟哥的 script 是在 zh_TW.big5 的语系下创建的,如果你需要转成万国码 (utf8) 的编码格式, 请下载上述文件后,利用第十章谈到的 iconv 来处理语系的问题! ![]() 前一小节的内容已经可以满足很多朋友的账号建置方法了,不过,某些时候上述的 script 还是很麻烦! 因为需要手动编辑 account1.txt 嘛!如果是类似学校单位这种学号非常类似的账号时,有没有更快的方案? 此外,如果需要每个班级同属于一个群组,不同班级的群组不同,又该如何建置?这是比较麻烦啦! 目前很多网站都有提供大量创建账号的工具,例如台南县网中心的卧龙大师: 提供的好用的 cmpwd 程序,但是小三大师的程序仅供学术单位使用,一般个人是无权使用的(参考上述连结的授权)。 不过,其实我们也可以利用简单的 script 来帮我们达成喔!例如底下这支程序, 他的运行结果与小三大师提供的程序差不多啦~但是因为我是直接以 useradd 来新增的, 所以,即使不了解 UID ,也是可以适用的啦~整支程序的特色是:
运行方法也简单的要命~请自行参考的啦!不再多说~使用时请注意,不要在公家使用的主机上面进行测试,因为..... 这支程序会大量创建账号嘛!^_^
如果有需要创建同一班级具有同一群组的话,可以先使用 groupadd 创建群组后, 将该群组加入『 cat "$accountfile" | cut -d':' -f1 | xargs -n 1 useradd -m -g groupname 』那行!这支脚本可以在底下连结下载: 如果仅是测试而已,想要将刚刚创建的使用者整个删除,则可以使用如下的脚本来进行删除!
总之,账号管理是很重要的!希望上面的说明能够对大家有点帮助啦! |
|||||||||||
本网页主要以Firefox配合解析度 1024x768 作为设计依据 鸟哥自由软件整合应用研究室