8.2 用户管理
时间:2007-06-13 来源:woshijishukuang
系统保存着有关每个用户的一系列信息,这些信息以下面的方式标识:
用户名:用户名是用来标识系统中每个用户的唯一标识符,例如:frank,qhua和wang。用户名中可以使用字母、数字、下划线(_)和句点(.)。通常情况下用户名限制在8个字符。
用户ID:用户ID或UID,是系统给每个用户的唯一的数字,系统通常是通过UID而不是用户名来保存用户信息的。
组ID:组ID或GID是用户的缺省组ID。每个用户通过系统管理员被定义属于—个或多个组,下面将进一步介绍。
口令: 系统还保存了用户加密了的口令,passwd命令可用来设置和改变用户口令。
全名:用户的“真实名字”或“全名”,与用户名一起存储,例如用户wang在现实世界中的名字为Wang Yang Xia。
个人目录:个人目录是用户在注册时最初所处的目录,每个用户都有其个人目录,通常在目录/home下。
用户的注册shell是在注册时启动的shell,例如:/bin/bash和bin/tcsh。
文件/etc/passwd中包含了有关用户的这些信息,文件中的每一行包含了一个用户的信息,每—行的格式如下:
username: encypted password: UID:GID:full name:home directory: login shell
例如:
wang: Xv8Q98lg7iokk:102:100:Wang Yang Xia:/home/wang:/bin/bash
其中第—个域,“wang”就是用户名
第二个域,“Xv8Q981g7iokk”是加了密的口令,存储在系统中的口令是人们无法读懂的格式。口令用它本身作为密钥来加密,换句话说,你需要知道口令来解密,这种形式的加密是相当安全的。
有些系统采用的是“阴影口令”,这时口令信息被移交给文件/etc/shadow。因为/etc/passwd是全局可读的,而/etc/shadow则提供了某种程度的安全性。因为它并不能全局可读,阴影口令提供了其它一些特征,例如口令逾期等,这里不展开讨论这些特征。
第三个域,“102”是UID,这个数对于每个用户来说是唯一的。
第四个域,“100”是GID,这个用户属于组号为100的组,组信息和用户信息都存在文件/etc/group中。
第五个域是用户的全名,“Wang Yan Xia”。
最后两个域分别是用户的个人目录( /home/wang)和注册shell(/bin/bash)。用户的个人目录并不需要与用户名同名,但采用相同的名字便于识别目录。
8.2.2 增加用户
增加—个用户需要完成以下几步,首先需要在/etc/passwd中给用户一个人口项。 该项具有唯—的用户名和UID, GID、全名和其它—些必须说明的信息。用户的个人目录必须创建,而且必须对该目录的存取权限进行设置,使得用户可以拥有该目录。shell初始化文件必须在新的个人目录下提供,还必须完成其他一些系统范围内的配置(如对新用户设置收到电子邮件的缓冲池等)。
虽然手工增加用户并不困难、但当运行一个具有很多用户的系统时很容易忘掉一些事情,最简单的增加用户的方法就是采用交互式程序来完成,该程序询问一些必需的信息并且自动修改所有的系统文件。这样的程序名为useradd或adduser,它依赖于所安装的软件,这些命令的联机帮助将详细地解释其用法。
8.2.3 删除用户
删除用户可以通过命令userdel或deluser来完成,这依赖于系统所安装的软件。
如果想不删除用户帐户而暂时使用户无法注册,可以仅仅在/etc/passwd中的口令域前加星号(“*”)来实现。例如:将wang的/etc/passwd项改为:
wang:*Xv8Q981g7iOkk:102:100:Wang Yan Xia:/home/wang:/bin/bash
这样wang便无法注册。
8.2.4 设置用户属性
创建用户之后可以改变用户的属性,例如个人目录或口令,最简单的方法就是直接改变/etc/passwd中的值。设置用户口令,可以用passwd命令,例如:
$ passwd wang
将改变wang的口令,只有root才可以用这种方法改变其他用户的口令,其他用户也可以用passwd来改变他们自己的口令。
在某些系统中,命令chfn和chsh可以提供允许用户设置他们自己的全名和登录shell属性,不然的话,他们必须要求系统管理员为他们改变属性。
8.2.5 管理用户组
前面已经提到过每个用户属于一个或多个组,但唯一真正重要的是组间的关系与文件极限相关。每个文件有一个“组所有权”和一些组存取极限,这些权限定义了该组中的用户如何存取文件。
有一些系统定义的组,如bin, mail和sys,一般用户不能属于这些组中的任何一个,它们仅仅用来控制系统文件的存取。用户应该属于一个单独的组,如users;还可以有多个用户组,比如student,staff和faculty等。
文件/etc/group中包含了有关组的信息,每一行的格式为:
组名:口令: GID:其他成员
例如: root:*:0:
user:*: 100:mdw,larry
guest:*:200:
other:*:250: wang
第一个组, root是一个特殊的系统组,是为root帐户保留的。
第二个组, users是—个常规用户组,其GID为100,用户mdw和larry是该组的成员。在/etc/passwd中每个用户都有一个缺省GID值,用户还可以属于多个组,只需要将用户名增加到/etc/group中的其他组项中即可。命令groups列出用户当前可存取的所有组。
第三个组, guest是客户用户组。
Other是其他用户组,用户wang属于该组。
从上面可以看出,/etc/group中的口令域很少使用,有时要对组的存取设置口令,但几乎很少需要这样做。为了防止用户用newgroup命令改变成为有特权的组,把口令域设置为“*”。
addgroup或groupadd命令用来给系统增加组。通常情况下,直接往etc/group中增加项比较容易,因为增加—个组并不需要做其它的配置,删除—个组也只需要在/etc/group中删除该项即可。