普通用户管理(上)
 
         用户管理的基本任务包括添加新用户、删除用户、修改用户属性,以及对现有用户的访问参数进行设置。与此密切相关的文件包括/etc/passwd、/etc/shadow,以及/home目录下的文件。虽然Red Hat Enterprise Linux提供了图形化工具用来完成这些任务,但大多数管理员更习惯于在命令行界面中执行管理操作。
一、 添加新用户
         系统中一个合法的用户应该具有用户名、真实姓名、密码和登录环境等用户信息。与此相对应,添加一个新用户通常需要系统完成一下几项操作:
         1. 设置用户名称及密码
         2. 设置用户的UID。系统在/etc/passwd文件中查找目前使用的大于或等于500的UID的最大编号,加1后赋予当期的用户;若目前还没有大于500的编号,则将500赋予该用户
         3. 添加该用户所属的用户组。每一个用户都会属于一个或多个用户组。系统在添加新用户时默认添加的用户组与新用户名相同,同时会赋予该用户组一个GID,通常GID的编号与UID的编号相同
         4. 创建以新用户的用户名为名称的主目录。在大多数系统中,用户的主目录都被创建在同一个特定目录下,例如/home。各用户对自己的主目录有完全的读、写执行权限,其他用户只能依据该目录的权限设置进行访问
         5. 设定用户的shell环境,默认是/bin/bash
         6. 设定用户的失效时间,默认是99999天后
         7. 设定失效前发出警告的天数,默认是失效前7天
         在Red Hat Enterprise Linux的安装过程中,系统会自动创建若干个默认的标准用户(Standard Users),其中除了root代表系统管理员之外,其余帐号都是系统帐号。系统帐号是应用程序在运行过程中所具有的权限。
管理员可以使用useradd或adduser命令来添加一个新的用户。在Red Hat Enterprise Linux中,通过查看adduser和useradd这两个命令的文件信息,可以看出其功能是完全相同的:

         可以看出,adduser命令只是useradd命令的一个链接文件,如此设计只是为了方便用户的使用。useradd程序通常在/usr/sbin目录中,命令格式为:
useradd [-D] [-c] [-d] [-e] [-f] [-g] [-G] [-m] [-M] [-s] [-u] [-n] [-r]
         不带参数-D时,useradd命令用来指定新账户的设定值,如果没有指定则使用系统的默认值。useradd可使用的选项如下所述:
 -c comment:用户的注释说明
 -d home_dir:用户每次登录系统时所使用的登录目录,可以用来取代默认的/home/username主目录
 -e expire_date:帐号失效日期。日期的指定格式为MM/DD/YY
 -f inactive_days:设定从帐号过期到永久停用的天数。当其值为0时帐号到期后会立即被停用。而当值为-1时,帐号不会被停用,系统默认值是-1
 -g initial_group:用户默认的用户组或默认的组ID。该用户组或组ID必须是已近存在的,其默认组ID值为100,即属于users组
 -G group[,…]:设定该用户为若干用户组的成员。每个用户组使用“,”分隔,且不可以夹杂空格。组名与-g选项的限制相同,且-g的设定值为用户的第一用户组
 -m:用户目录如不存在则自动建立。若使用-k选项,则skeleton_dir目录内的文档会复制至此用户目录中,同时/etc/skel目录下的文档也会复制过去。任何在skeleton_dir或/etc/skel中的目录也同样会在该用户目录下一一建立。-k和-m的默认值是不建立目录及不复制任何文档
 -M:不建立用户主目录,使用/etc/login.defs系统文件夹对用户进行设定
 -n:系统默认用户组名称与用户名称相同。打开此选项将取消该默认设定
 -r:此参数用来建立系统帐号。系统帐号的UID是比定义在/etc/login.defs中的UID_MIN小的值,UID_MIN的默认值是500(该参数所建立的帐号不会创建用户主目录,也不会依据/etc/login.defs对用户进行设置。如果想创建用户主目录,须额外指定-m参数)
 -shell default_shell:指定用户的登录shell,系统默认为/bin/bash
 -u uid:用户的UID值。该数值在系统中必须唯一,且数字不可为负值。0—499传统上预留给系统帐号使用
         带参数-D且配合其他选项,useradd可以对系统的默认值进行重新设定。如不带任何其他选项,则显示当前的默认值,如下所示:
         如使用useradd命令修改系统默认值,命令行如下:
         例如添加一新用户student2,UID为502,用户组ID为100(users用户组的标识符是100),用户目录为/home/student2,用户的默认Shell为/bin/bash,帐号的失效日期为2011年10月30日,其命令行为:
         新添加用户的用户信息存储在/etc/passwd和/etc/shadow文件尾行,使用tail命令可以查看:
         如果新添加的用户名已经存在,那么执行useradd命令后,系统会提示用户已存在:
二、 解析/etc/passwd文件
         /etc/passwd文件存储着用户的相关信息,包括用户名、密码和主目录位置等。根用户对该文件有读和写的权限,普通用户只有读权限。Linux 2.0以上版本为了增强系统的安全性,采用了用户基本信息与密码分开存储的方法,密码已不再存放在/etc/passwd文件中,而是转存到了同目录下的/etc/shadow文件中,其原来存在密码的位置用“x”标识。/etc/passwd存储的信息格式如下:
Username:encypted password:UID:GID:full name:home directory:login shell
其中共7个字段,各字段之间用“:”分隔。利用cat命令查看/etc/passwd文件内容如下:
         可以使用vipw命令直接编辑/etc/passwd文件。vipw命令功能上相当于“vi /etc/passwd”命令,但比直接使用vi命令更安全。在用vipw命令编辑passwd文件时将自动对该文件加锁,编辑结束自动解锁,从而保证了数据的一致性。
文件中列出了所有用户的信息,每个用户占用一行,行中各字段含义如下:
         1. 用户名:用户名是用户在系统中的标识,通常长度不超过8个字符,由字母、数字、下划线或句点组成
         2. 密码:该字段存放加密后的用户密码。由于现在的系统大多采用shadow技术,该字段通常只存放一个特殊的字符“x”,真正的密码已转移到/etc/shadow文件中
         如果该字段的第一个字母是“#”,如下例所示,则表示该用户已被停用,即系统暂时不再允许该用户登录,但该用户的信息和相应的主目录及属主文件仍保存在系统中,并没有被系统删除:
         3. 用户标识号(UID):UID是用户在系统中的唯一标识号,必须是整数,通常与用户名一一对应。当用多个用户名同一个UID时,系统会把它们视为同一用户
UID的取值范围是0—65535。0—499一般由系统自己保留,其中“0”由根用户占用,新增用户的UID和GID需要大于或等于500。
         4. 用户组标识号(GID):该字段记录用户所属的用户组。用户组的具体定义可以查看/etc/group文件
         5. 个人信息描述:该字段记录用户的真实姓名、电话、地址和邮编等个人信息。各项之间用“,”分隔,该字段内容可以为空
         6. 登录目录:该目录是用户登录系统后的默认目录,通常就是用户的主目录,一般在/home下。根用户登录系统后默认的登录目录是/root
         7. 登录shell:用户以文本方式登录系统后需要启动一个shell进程。Shell是用户和Linux内核之间的接口程序,负责将用户的操作传递给内核,所以shell也被称为命令解释器。在Linux系统中有多钟shell可以使用,各shell之间略有差别,常用的包括sh(Bourne Shell)、csh(C Shell)、ksh(Korn Shell)、tchs(TENEX/TOPS-20 type C Shell)和bash(Bourne Again Shell)等。其中C shell可以提供方便的用户界面设计,语法与C语言很相似,而Korn shell兼有C shell和Bourne Shell的优点
无论是普通用户还是根用户,登录系统后都会进入该字段指定的命令解释器状态下,用户输入的每一个命令都将被这个命令解释器翻译执行。
         该字段也可以指定一个特定的程序,此时用户登陆后只能执行该程序。程序执行一结束,用户就自动退出系统。

(由于字数太多,故分两篇上传)
 
联系邮箱: minwanvip@163.com
QQ群:107642321  (诚邀您的加入)