LINUX手动添加用户---方法二

上一篇 / 下一篇  2009-05-07 16:35:41 / 个人分类:Linux/Unix


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

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

一些检查工具

既然要手动修改帐号的相关设定档,那么一些检查群组、帐号相关的指令就不可不知道啊~ 尤其是那个密码转换的 pwconv 及 pwuconv 这两个玩意~可重要的很呢! 底下我们稍微介绍一下这些指令吧!

# pwck
pwck 这个指令在检查 /etc/passwd 这个帐号设定档内的资讯,与实际的家目录是否存在等资讯, 还可以比对 /etc/passwd /etc/shadow 的资讯是否一致,另外, 如果 /etc/passwd 内的资料栏位错误时,会提示使用者修订。 一般来说,我只是利用这个玩意儿来检查我的输入是否正确就是了。

[root@linux ~]# pwck
user adm: directory /var/adm does not exist
user news: directory /etc/news does not exist
user uucp: directory /var/spool/uucp 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@linux ~]# echo "dmtsai:abcdefg" | chpasswd

神奇吧!这样就可以更新了呢!在预设的情况中, chpasswd 使用的是 DES 加密方法来加密, 我们可以使用 chpasswd -m 来使用 FC4 预设的 MD5 加密方法,不过, FC4 似乎怪怪的,我老是无法使用 -m 来达成这个指令。无论如何, 还是可以直接使用 chpasswd 来应用 DES 加密喔! 使用 DES 方法加密后,在 /etc/shadow 的密码栏内,他的密码位数为 13 位, 瞭乎??
小标题的图示特殊帐号,如纯数字帐号的建立
在我们瞭解了 UID/GID 与帐号的关系之后,基本上,您应该瞭解了,为啥我们不建议使用纯数字的帐号了! 因为很多时候,系统会搞不清楚那组数字是‘帐号’还是‘UID’,这不是很好啦~ 也因此,在早期某些版本底下,是没有办法使用数字来建立帐号的。例如在 Red Hat 9 的环境中, 使用‘ useradd 1234 ’他会显示‘ useradd: invalid user name '1234' ’呼呼!瞭解了吗?! (不过,这个问题在 FC4 却不存在!因为 FC4 可以建立纯数字的帐号说~)

不过,有的时候,长官的命令难为啊~有时还是得要建立这方面的帐号的,那该如何是好? 呵呵!当然可以手动来建立这样的帐号啦!不过,为了系统安全起见,鸟哥还是不建议使用纯数字的帐号的啦! 因此,底下的范例当中,我们使用手动的方式来建立一个名为 normaluser 的帐号, 而且这个帐号属于 normalgroup 这个群组。OK!那么整个步骤该如何是好呢? 由前面的说明来看,您应该瞭解了帐号与群组是与 /etc/group, /etc/shadow, /etc/passwd, /etc/gshadow 有关,因此,整个动作是这样的:

1. 先建立所需要的群组 ( vi /etc/group );
2. 将 /etc/group 与 /etc/gshadow 同步化 ( grpconv );
3. 建立帐号的各个属性 ( vi /etc/passwd );
4. 将 /etc/passwd 与 /etc/shadow 同步化 ( pwconv );
5. 建立该帐号的密码 ( passwd accountname );
6. 建立使用者家目录 ( cp -a /etc/skel /home/accountname );
7. 更改使用者家目录的属性 ( chown -R accountname:group /home/accountname )。

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

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

3. 同步化密码,并且建立该使用者的密码
[root@linux ~]# pwconv
[root@linux ~]# grep 'normaluser' /etc/passwd /etc/shadow
/etc/passwd:normaluser:x:700:520::/home/normaluser:/bin/bash
/etc/shadow:normaluser:x:13030:0:99999:7:::
# 呵呵!没错没错!已经建立妥当啰~但是密码还不对~
[root@linux ~]# passwd normaluser
Changing password for user normaluser.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

4. 建立使用者家目录,并且修订权限!
[root@linux ~]# cp -a /etc/skel /home/normaluser
[root@linux ~]# chown -R normaluser:normalgroup /home/normaluser

别怀疑!这样就搞定了一个帐号的设定了! 从此以后,你可以建立任何名称的帐号啰~不过,还是不建议您设定一些很怪很怪的帐号名称啦!

小标题的图示不开放终端机登入的帐号 (ex>mail acccount)
刚刚我们上面建立的这个帐号是‘可以登入系统的帐号’,如果想要建立一个不能登入系统的帐号, 例如单纯使用邮件收发信件而已的帐号,那么又该如何设定呢?很简单啦~ 你可以这样想:

* 因为不需要登入系统,所以建议 shell 栏位给予 /sbin/nologin ;
* 因为不需要登入,所以家目录也可以先不建立。

也就是说,其实所有的步骤与刚刚上头提到的动作都一样,不过,少掉了很多与家目录有关的设定行为就是了。 底下我假设我的系统里面有个叫做 mail 的群组 (/etc/group) ,他的 GID 是 12 (以 FC4 为例), 另外,这个使用者的帐号为 popuser ,假设 UID 为 720 ,那么该如何建立呢?

1. 修改帐号属性
[root@linux ~]# vi /etc/passwd
popuser:x:720:12::/home/popuser:/sbin/nologin

2. 密码同步,并且给予密码!
[root@linux ~]# pwconv
[root@linux ~]# passwd popuser

这样就又 OK 了~哇!真是太简单了杰克~....

那么又该如何删除这些帐号呢?啊!还是建议利用 userdel 啦~简单~乾脆又俐落~ 如果想要暂时移除而已的话,那么利用 passwd -l 及 passwd -u 吧! ^_^。 如果真的那么想要手动来移除这个帐号的话,就这样做:

1. 先以 find / -user account 找出所有的帐号档案,并将他删除;
2. 将 /etc/passwd 与 /etc/shadow 的相关资料删除;
3. 将 /etc/group 及 /etc/gshadow 相关资料删除;
4. 将 /home 底下关于该帐号的目录删除;
5. 到 /var/spool/mail 以及 /var/spool/cron 里面将相关的使用者档案删除。

这样就手动删除啦~


TAG:

 

评分:0

我来说两句

Open Toolbar