我要学Linux操作系统第5章RedHatLinux9用户管理5.1认识用户和组5.2root账号5.3管理用户账号5.4管理用户组系统工作中重要的一环,用户管理包括用户与组账号的管理。所谓账号管理是指账号的新增、删除和修改、账号规划以及权限的授予等问题。本章主要阐述了RedHatLinux9的账户管理机制,包括用户管理和组管理。在本章的最后介绍了RedHatLinux9中常用的用户管理工具。第5章RedHatLinux9用户管理系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限。在RedHatLinux中系统账号可分为两种类型:(1)用户账号:通常一个操作者拥有一个用户账号,这个操作者可能是一个具体的用户,也可能是应用程序的执行者,比如apache、ftp账号。每个用户都包含一个惟一的识别码,即用户ID(UID,UserIdentity),以及组识别码,即组ID(GID,GroupIdentity)。在Linux系统中可以有两种用户账号:管理员root用户和普通用户。(2)组账号:一组用户账号的集合。通过使用组账号,可以设置一组用户对文件具有相同的权限。管理员以组为单位分配对资源的访问权限,例如读取、写入或执行的权限,从而可以节省日常的维护时间。5.1认识用户和组安装的过程中,系统会自动创建许多用户账号,而这些默认的用户就称为“标准用户”。这些用户账号除了“root”代表超级用户之外,其余账号都是系统账号,也就是应用程序在执行时的身份。需要注意的是,标准账号是操作系统安装时,自动建立的用户启动相应的应用程序,超级用户在向系统添加普通用户的时候,不能和系统中已有的标准用户同名。系统中的部分标准账号见下表。5.1认识用户和组系统的部分标准账号安装的过程中,系统除了会自动创建默认的用户账号外,也会新增“标准组”账号。同样,除了“root”组是用来组织管理者之外,其余的账号都是提供给应用程序在执行时使用。RedHatLinux9的部分标准组见下表。组名称组ID(GID)组成员root0rootbin1root,bin,daemondaemon2root,bin,daemonsys3root,bin,admadm4root,bin,daemontty5disk6rootlp7daemon,lpLinux系统的部分标注组账号账号通常用于系统的维护和管理,它对Linux操作系统的所有部分具有不受限制的访问权限。值得注意的是,系统真正关心的并不是该账号的用户名,而是该账号的用户ID,即UID。/etc、passwd文件中定义的超级用户UID为0,也就是说,如果某个账号的uid为零,系统将会认为该用户就是超级用户。在Linux中超级用户登录系统的时候,系统不会对该用户进行存取限制和安全性验证,所以超级用户root可以操作任何人的文件或者就像文件的拥有者一样管理文件。5.2root账号中,都不推荐直接使用root账号登录系统。当系统管理员需要从普通用户切换到超级用户时,可使用su或su-命令,然后输入root账号的密码即可,而不用重新登录。例如,使用su命令切换用户:[tom@myhosttom]$su在tom账号下使用su命令Password:输入root账号密码[root@myhosttom]#进入root账号使用su–命令切换用户:[tom@myhosttom]$su-在tom账号下使用su命令Password:输入root账号密码[root@myhostroot]#进入root账号5.2root账号需要返回原来的普通用户账号时,直接输入exit命令即可。如果要进入别的普通用户账号,可在su命令后直接加上其他账号,然后输入密码。su和su–命令不同之处在于,su-切换到对应的用户时会将当前的工作目录自动转换到切换后的用户的主目录。输入后,系统将提示输入相应用户的口令,只有输入的口令正确才能完成身份的转换。如果su命令后没有携带用户名,系统默认从当用户切换到超级用户,并提示用户输入超级用户口令。5.2root账号的早期版本中,用户的账号数据,包括用户名、用户ID、组ID、用户的主目录和用户使用的shell等都保存在/etc/passwd文件中。由于该文件对于任何用户都是可读的,因而存在口令安全隐患。在RedHatLinux9中,为了确保用户的口令安全,在/etc/passwd文件中不再保存用户的口令数据,用户的口令被加密后存放在/etc/shadow文件中,passwd文件仍然保持了所有用户的可读性,而shadow文件只有root账号才可读。这种机制称为影子密码体系。在默认安装RedHatLinux9的时候,shadow文件中的口令使用MD5加密。5.3管理用户账号5.3.1Linux的影子密码体系.用户账号信息——/etc/passwd通常在Linux中的所有账户信息都记录在/etc/passwd中,该文件的存取属性为644,也就是对所有用户可读,但只用root组中的用户才能修改。在/etc/passwd文件中,每一行都代表一个用户的账号信息,而每个用户的信息都是以“:”来分隔不同的字段记录,其中包含7个字段,见下表。字段1字段2字段3字段4字段5字段6字段7用户名口令UIDGID账号信息主目录登录shellrootx00root/root/bin/bash/etc/passwd中包含的字段各字段的含义如下:用户名:是用户登录系统时的登录名,它由root或是具有和root相同权限的管理员指定,每个用户在登陆系统时都必须使用指定的登录名。口令:即用户的登录系统时使用的密码。通常该字段是一个“x”,表示是一个经过加密处理的口令,加密后的密码给放置在/etc/shadow文件中,且该文件只能被root组的账号访问。如果该字段显示“*”则表示对应账号停用。UID:每个账号唯一的识别号,最大可谓65535。UID在500之前的账号是提供系统服务使用的,管理员新增的第一个普通用的UID为500,然后依次是501、502…以此类推。5.3管理用户账号5.3.1Linux的影子密码体系GID:组账号的唯一的识别号。用户组的信息被存放在/etc/group文件中,root组的GID为0。管理员创建的第一个组的GID为500,然后依次是501、502…以此类推。账号信息:主要存放用户的附加信息,如用户名称、电话或该用户的详细说明等。用户可以使用finger命令来查看该字段的内容,还可以利用chfn命令来修改其内容。主目录:用户登录后直接进入的目录,在默认的状态下,每个用户都有一个主目录。root用户的主目录为/root,管理员创建的用户的主目录通常为/home/用户名,如tom用户主目录为/home/tom。5.3管理用户账号5.3.1Linux的影子密码体系登录shell:用户在登录系统时使用的shell,RedHatLinux9默认使用的是/bin/bash,用户可以使用chsh命令更改自己的登录shell。如果用户只是系统通过该用户账号获取系统的某种服务,而不希望该用户能够登录Linux工作站,可以将此登录shell修改为/bin/false、/bin/true、/dev/null和/sbin/nologin等其中之一。2.用户口令文件——/etc/shadow在Linux系统中通常使用影子口令机制(ShadowPassword),用户的身份信息被存放在/etc/passwd文件中,用户的口令信息加密后保存在另一个文件/etc/shadow中,并只设置root账号的可读属性,因而大大提高了系统的安全性能。5.3管理用户账号5.3.1Linux的影子密码体系的影子密码体系在/etc/shadow文件中有9个字段,每个字段使用“:”分隔。其中保存了用户名、加密后的口令等信息。各字段的含义见下表。字段说明1用户账号名称,如root2用户加密后的口令。如果该字段的值为“!!”和“*”,则表示该用户当前没有密码,也不能登录系统,这些用户通常是标准账号。其他的用户密码都是经过MD5加密后的内容。另外,用户任何时候都不能通过直接修改该字段的方法,来更变用户口令3由1970年1月1号算起,到最后一次修改密码的时间间隔(以日为单位)4密码自上次修改后,要间隔多少天数后才能再次被修改,如果为0则无限制/etc/shadow中包含的字段密码自上次修改后,最多间隔多少天数后密码必须被修改6如果密码有时间限制,那么在过期前多少天向用户发出警告,默认为7天7如果密码设置为必须修改,到期后仍未修改,系统自动关闭账号的天数8从1970年1月1号算起,到账号过期的天数9系统保留,尚未使用使用影子密码机制可以提供以下的优点:(1)将原本/etc/passwd文件中的密码移至/etc/shadow文件中,而shadow文件只允许管理员root账户读取,可以提高系统的安全性。而且其中的密码是采用MD5算法加密的,root账户也无法直接获得口令的内容,但是root账户可以变更用户密码或停用每个账户。(2)可记录密码变更的时间。(3)可以设置密码使用的时间,以避免用户的密码变更过于频繁。(4)可以使用/etc/login.defs文件来设置密码的安全性原则,例如密码的最小长度或密码最短的使用时间等。用户管理的工作包括建立一个合法的账号、设置和管理用户的口令、修改账号的属性以及在必要时删除账号。虽然在绝大部分的类UNIX系统中,都支持直接修改/etc/passwd文件来管理账号的信息,但是,如果存在/etc/shadow文件,这种方式便会失效。5.3管理用户账号5.3.1Linux的影子密码体系用户存储用户信息的/etc/passwd文件只有超级用户才能进行修改,而用于存储用户口令的文件/etc/shadow甚至只有超级用户才可以访问。只有在普通用户执行passwd命令的时候,能够读取和修改/etc/passwd和/etc/shadow文件,才能使普通用户修改自己的口令。为了解决在用户修改口令时,文件系统存取权限