在管理linux中,账户的管理是重要的一个环节,它是权限控制的重要的组成部分。也是管理员管理整个linux中十分基础的一部分。

一、用户和组相关的配置文件

/etc/passwd: 用户的帐号信息

/etc/shadow: 用户密码和相关的帐户设定

/etc/group: 组的帐号信息

/etc/gshaow: 组的密码信息

1、/etc/passwd

在passwd文件中,一行代表一个账户的信息,有多少行,就代表有多少个用户。如下,查看前3个用户,可以看到相关的账户配置信息。

[root@bogon /]# head -3 /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin

通过man 5 passwd中,可以看到/etc/passwd的详细解析。

每一个用户的格式为

account:password:UID:GID:GECOS:directory:shell

(1)account  账户名称,名称不应该出现大写字母。

(2)password  账户的密码表示,在此处显示为x,密码的详细信息会保存在/etc/shadow文件中,详细可浏览下文。

(3)UID  标示账户的ID。

        需要注意的是:

            0为系统管理员。

            1-500为系统用户,可以分配改数字段给系统进程使用。

            500-65535为自定义的用户,如果要建立一个普通得账号,使用该数字段。

(4)GID 该账户所属的组ID。组相关的信息保存在/etc/group,详细可浏览下文。

(5)GECOS,General Electric Comprehensive Operating System。其实就是用户的注释信息。

(6)directory 用户的家目录。如root账号,家目录在/root。如果新建一个用户,用户默认家目录在/home/yourAccount。

(7)shell 用户的默认shell,如果为空,默认使用/bin/sh。

2、/etc/shadow

如上文提到,用户的密码详细信息,将保存在/etc/shadow中。同样,每一行代表一个用户的密码详细信息。如下,查看前3个账户密码,可以看到相关的账户信息。

[root@bogon ~]# head -3 /etc/shadowroot:b3Vg6K9PN86O6:16673:0:99999:7:::bin:*:15980:0:99999:7:::daemon:*:15980:0:99999:7:::

(1)账号名称。与/etc/passwd下的用户名对应。

(2)密码。经过加密后的密码。可以看到root账户密码加密后是一串复杂的编码。bin该位为*,代表该用户是不允许登陆的。如果在账户密码的第一位加上*,那么,该账户就不能登陆到系统了。

(3)上次更改密码的日期。记录的是从1970 年 1 月 1 日到更改密码时候过经过的天数。

(4)密码不可被更改的天数。设置为0,则随时可以改。

(5)需要重新更改密码的天数。

(6)到达需要重新更改密码的期限前得警告天数。

(7)账户失效的期限。过了失效期限还没有重新设置密码,则账户会被停用

(8)账户取消日期。这个字段跟第三个字段表示的情况一样,都是从1970 年 1 月 1 日开始计算。

(9)被保留下来的位置。

3、/etc/group

用户组的信息将会保存在改文件中,组对应的用户列表,也会保存在里面。同样,每一行代表一个组的详细信息。如下,查看前3个组,可以看到相关的账户信息。

[root@bogon ~]# head -3 /etc/grouproot:x:0:bin:x:1:bin,daemondaemon:x:2:bin,daemon

每一个组的格式为

 group_name:passwd:GID:user_list

(1)组名。

(2)组密码。一般不会设置。同样会表示为x,详细信息在/etc/gshaow保存。

(3)组ID。

(4)该组存在的账户。

二、账户管理相关命令

1、useradd

新增一个账户

格式:useradd 选项 账户名称

常用选项:

-u UID:指定新建账户的ID。

-g GID:指定账户所属的基本组。

-G GID: 指定账户所属的附加组。

-c ‘COMMIT’:给新建账户添加注释。

如: 

# useradd -u 1100 test

2、userdel

删除指定的账户

格式:userdel 选项 账户名称 

-r 连同改账户的家目录一并删除

如: 

#userdel -r test

3、groupadd

添加一个组

格式:groupadd 选项 组名

-g GID:指定新建组的组ID。

-r 创建系统组

如:

# groupadd -g 1101 testgrp

4、groupdel

删除指定的组

格式:groupdel 组名

如: 

# groupdel testgrp

5、passwd

给指定的账户设定密码

格式:passwd USERNAME

--stdin :通过标准的输入给指定的账户设定密码 

如:

# passwd test# echo ’testpwd’ | passwd --stdin test

6、usermod

修改账户设定的信息

格式:usermod 选项 USERNAME

-u UID:修改账户ID

-g GID:修改账户的组ID

-G GID:修改账户的附加组

-c :修改账户的备注信息

-d :修改账户的家目录路径

-s :修改账户的SHELL

-l  :修改账户的名称

-L :lock(锁定)账户

-U :unlock(解锁)账户

如:

# usermod -u 1101 test# usermod -l testing test

7、groupmod

修改组信息

格式:groupmod 选项 GROUPNAME

-g GID:修改指定的组ID

-n :设定新的组名

如:

# groupmod -g 502 test# groupmod -n testing test

8、chage 

修改用户的属性

格式:chage 选项 USERNAME

-m :最短使用时间

-M : 最长使用时间

-I  :非活动期限

如:

#chage -m 2 testing

9、id

查看账户的信息

格式:id 选项 USERNAME

-u UID:查看账户ID

-g GID:查看组ID

如:

# id -u testing

10、su

切换用户

格式 su 选项 USERNAME

如:

# su -root

综合练习:

1、创建用户mandriva, ID2200 基本组为distro,组ID3300, 附加组为peguin

[root@bogon /]# groupadd -g 3300 distro[root@bogon /]# groupadd peguin[root@bogon /]# useradd -u 2200 -g distro -G peguin mandriva

2、创建用户gentoo,其全名为“Gentoo”,默认shell/bin/tcsh

[root@bogon /]# useradd -c 'Gentoo' -s /bin/tcsh gentoo

3、修改mandrivaUID4400, 基本组为linux 附加组为distrogentoo;

[root@bogon /]# usermod -u 4400 -g linux -a -G distro,gentoo mandriva

 4、给gentoo添加密码,并设定其密码最短使用期限为2天,最长为60天,警告为3天,非活动期限为7天;

[root@bogon /]# echo "gentoopwd" | passwd --stdin gentoo[root@bogon /]# chage -m 2 -M 60 -I 7 gentoo

gentoo 账户在/etc/shadow文件中记录的信息变成如下:

gentoo:$6$IdeEfsVq$8Ry23Fj..hKe60swCdYHYpFW9pg6rXIry1n9xnjw.4rUYAC3Pv6A2JueZblguCRJR13R2jC0HD6Q39uMzp.Gu/:16680:2:60:7:7::