`

第十四章 手动新增使用者

 
阅读更多
一般来说,我们不很建议大家使用手动的方式来新增使用者,为什么呢? 因为使用者的创建涉及到 GID/UID 等权限的关系,而且,与文件/目录的权限也有关系, 使用 useradd 可以帮我们自动配置好 UID/GID 家目录以及家目录相关的权限配置, 但是,手动来添加的时候,有可能会忘东忘西,结果导致一些困扰的发生。

不过,要了解整个系统,最好还是手动来修改过比较好,至少我们的账号问题可以完全依照自己的意思去修订, 而不必迁就于系统的默认值啊!但是,还是要告诫一下朋友们,要手动配置账号时, 您必须要真的很了解自己在作什么,尤其是与权限有关的配置方面喔!好吧!底下就让我们来玩一玩啰~ ^_^


一些检查工具

既然要手动修改账号的相关配置文件,那么一些检查群组、账号相关的命令就不可不知道啊~ 尤其是那个口令转换的 pwconv 及 pwuconv 这两个玩意~可重要的很呢!底下我们稍微介绍一下这些命令吧!


pwck

pwck 这个命令在检查 /etc/passwd 这个账号配置文件内的信息,与实际的家目录是否存在等信息, 还可以比对 /etc/passwd /etc/shadow 的信息是否一致,另外,如果 /etc/passwd 内的数据字段错误时,会提示使用者修订。 一般来说,我只是利用这个玩意儿来检查我的输入是否正确就是了。

[root@www ~]# pwck
user adm: directory /var/adm does not exist
user uucp: directory /var/spool/uucp does not exist
user gopher: directory /var/gopher does not exist


瞧!上面仅是告知我,这些账号并没有家目录,由于那些账号绝大部分都是系统账号, 确实也不需要家目录的,所以,那是『正常的错误!』呵呵!不理他。 ^_^。 相对应的群组检查可以使用 grpck 这个命令的啦!

pwconv

这个命令主要的目的是在『将 /etc/passwd 内的账号与口令,移动到 /etc/shadow 当中!』 早期的 Unix 系统当中并没有 /etc/shadow 呢,所以,用户的登陆口令早期是在 /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 并不会有上述两点问题啊! ^_^。不过,如果手动配置账号,这个 pwconv 就很重要啰!

pwunconv

相对于 pwconv , pwunconv 则是『将 /etc/shadow 内的口令栏数据写回 /etc/passwd 当中, 并且删除 /etc/shadow 文件。』这个命令说实在的,最好不要使用啦! 因为他会将你的 /etc/shadow 删除喔!如果你忘记备份,又不会使用 pwconv 的话,粉严重呢!

chpasswd

chpasswd 是个挺有趣的命令,他可以『读入未加密前的口令,并且经过加密后, 将加密后的口令写入 /etc/shadow 当中。』这个命令很常被使用在大量建置账号的情况中喔! 他可以由 Standard input 读入数据,每笔数据的格式是『 username:password 』。 举例来说,我的系统当中有个用户账号为 dmtsai ,我想要升级他的口令 (update) , 假如他的口令是 abcdefg 的话,那么我可以这样做:

[root@www ~]# echo "dmtsai:abcdefg" | chpasswd -m


神奇吧!这样就可以升级了呢!在默认的情况中, 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 有关,因此,整个动作是这样的:

先创建所需要的群组 ( vi /etc/group );
将 /etc/group 与 /etc/gshadow 同步化 ( grpconv );
创建账号的各个属性 ( vi /etc/passwd );
将 /etc/passwd 与 /etc/shadow 同步化 ( pwconv );
创建该账号的口令 ( passwd accountname );
创建用户家目录 ( cp -a /etc/skel /home/accountname );
更改用户家目录的属性 ( chown -R accountname.group /home/accountname )。

够简单的咯吧!让我们来玩一玩啰~

1. 创建群组 normalgroup ,假设 520 这个 GID 没有被使用!并且同步化 gshadow
[root@www ~]# vi /etc/group
# 在最后一行加入底下这一行!
normalgroup:x:520:
[root@www ~]# grpconv
[root@www ~]# grep 'normalgroup' /etc/group /etc/gshadow
/etc/group:normalgroup:x:520:
/etc/gshadow:normalgroup:x::
# 最后确定 /etc/group, /etc/gshadow 都存在这个群组才行!搞定群组啰!

2. 创建 normaluser 这个账号,假设 UID 700 没被使用掉!
[root@www ~]# vi /etc/passwd
# 在最后一行加入底下这一行!
normaluser:x:700:520::/home/normaluser:/bin/bash

3. 同步化口令,并且创建该用户的口令
[root@www ~]# pwconv
[root@www ~]# grep 'normaluser' /etc/passwd /etc/shadow
/etc/passwd:normaluser:x:700:520::/home/normaluser:/bin/bash
/etc/shadow:normaluser:x:14307:0:99999:7:::
# 确定 /etc/passwd, /etc/shadow 都含有 normaluser 的信息了!但是口令还不对~
[root@www ~]# passwd normaluser
Changing password for user normaluser.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

4. 创建用户家目录,并且修订权限!
[root@www ~]# cp -a /etc/skel /home/normaluser
[root@www ~]# chown -R normaluser:normalgroup /home/normaluser
[root@www ~]# chmod 700 /home/normaluser



转自:http://vbird.dic.ksu.edu.tw/linux_basic/0410accountmanager_7.php
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    PowerPoint.2007宝典 3/10

    2.2.11 第十一步:评估成果和精炼作品 42 2.3 选择和布置房间 42 2.4 选择服装 44 2.5 保持听众的兴趣 45 2.5.1 演讲技巧 45 2.5.2 内容提示 46 2.6 克服怯场 46 2.7 小结 46 第3章 创建和保存演示...

    PowerPoint.2007宝典 10/10

    2.2.11 第十一步:评估成果和精炼作品 42 2.3 选择和布置房间 42 2.4 选择服装 44 2.5 保持听众的兴趣 45 2.5.1 演讲技巧 45 2.5.2 内容提示 46 2.6 克服怯场 46 2.7 小结 46 第3章 创建和保存演示...

    SQL.Server.2008编程入门经典(第3版).part1.rar

    第14章 事务和锁 14.1 事务 14.1.1 BEGINTRAN 14.1.2 COMMITTRAN 14.1.3 ROLLBACKTRAN 14.1.4 SAVETRAN 14.2 SQLServer日志的工作方式 14.2.1 失败和恢复 14.2.2 隐式事务 14.3 锁和并发 14.3.1 通过锁可以防止的...

    SQL.Server.2008编程入门经典(第3版).part2.rar

    第14章 事务和锁 14.1 事务 14.1.1 BEGINTRAN 14.1.2 COMMITTRAN 14.1.3 ROLLBACKTRAN 14.1.4 SAVETRAN 14.2 SQLServer日志的工作方式 14.2.1 失败和恢复 14.2.2 隐式事务 14.3 锁和并发 14.3.1 通过锁可以防止的...

    龙果 java并发编程原理实战

    第14节synchronized保证线程安全的原理(理论层面)00:13:59分钟 | 第15节synchronized保证线程安全的原理(jvm层面)00:25:03分钟 | 第16节单例问题与线程安全性深入解析00:27:15分钟 | 第17节理解自旋锁,死锁...

    Java 并发编程原理与实战视频

    第14节synchronized保证线程安全的原理(理论层面) 00:13:59分钟 | 第15节synchronized保证线程安全的原理(jvm层面)00:25:03分钟 | 第16节单例问题与线程安全性深入解析00:27:15分钟 | 第17节理解自旋锁,...

    龙果java并发编程完整视频

    第14节synchronized保证线程安全的原理(理论层面)00:13:59分钟 | 第15节synchronized保证线程安全的原理(jvm层面)00:25:03分钟 | 第16节单例问题与线程安全性深入解析00:27:15分钟 | 第17节理解自旋锁,死锁...

    java并发编程

    第14节sy nchronized保证线程安全的原理(理论层面)00:13:59分钟 | 第15节synchronized保证线程安全的原理(jvm层面)00:25:03分钟 | 第16节单例问题与线程安全性深入解析00:27:15分钟 | 第17节理解自旋锁,...

Global site tag (gtag.js) - Google Analytics