2019年12月21日第4章用户和组的管理本章提要Fedora8用户管理Fedora8组管理Linux是一个多用户的操作系统,Linux系统管理员的关键任务之一是维护用户和组。即使计算机是专供一位用户使用的工作站,一般也需要在计算机中至少维护一个根账户和一个普通账户。本章的内容包括如何利用图形化工具和在命令行界面下完成用户账号、工作组的建立和维护,并正确设置用户权限和安全性问题。利用图形配置工具与使用命令进行用户/用户组管理完成的是同样的工作,不同之处在于图形工具的操作界面友好直观,用户也不必去记忆大量的命令和参数。用户管理Linux是一个多任务、多用户的操作系统,任何一个要使用系统资源的用户(使用者),都必须首先申请一个账号,然后用这个账号登录系统。用户的账号可以帮助系统对使用系统的用户进行跟踪,并控制用户对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性的保护。组是具有共同用户特征的用户的集合,这与现实生活中的个人与集体是类似的。Linux系统来说,使用组可提高系统的灵活性;对于具体的Linux系统管理员来说,通过管理组来管理用户,提高了工作效率。Linux的用户在Linux系统中,每个用户对应一个帐号。Fedora8安装完成后,系统本身已创建了一些特殊用户,它们具有特殊的意义,其中最重要的是超级用户,即root。还有一类用户是系统用户,是Linux系统正常工作所必需的内建用户,主要是为了满足相应的系统进程对文件属主的要求而建立的,如bin、daemon、adm、lp等用户。系统用户不能用来登录。系统用户也被称为虚拟用户。用户和组群的基本项目及含义项目含义用户名系统中用来标识用户的名称,可以是字母、数字组成的字符串,区分大小写用户标识UID系统中用来标识用户的数字用户主目录系统为每个用户配置的单独使用环境,即用户登录系统后最初所在的目录,用户的文件都放置在此目录下登录shell用户登录后启动以接收用户的输入并执行输入相应命令的程序,如/bin/bash、/bin/csh用户组/组群具有相似属性的多个用户被分配到一个组中组标识GID用来表示用户组的数字标识Linux用户登录系统的过程Linux系统采用纯文本文件来保存账号的各种信息,其中最重要的文件有/etc/passwd、/etc/shadow、/etc/group。Linux用户登录系统的过程实质上是系统读取和核对这几个文件的过程。具体过程如下:(1)首先Linux会出现一个登录系统的画面,提示输入账号,在这里输入账号与密码。(2)Linux会先找寻/etc/passwd里面是否有这个账号,如果没有则退出登录,如果有,则将该账号对应的UID(UserID)与GID(GroupID)读出来。另外,该账号对应的用户主目录与Shell设定也一并读出。(3)核对密码表。这时Linux会进入/etc/shadow找出登录账号与UID相对应的记录,然后核对一下刚刚输入的密码与此文件的密码是否符合。(4)如以上核对都没有问题,用户正式进入系统。账号文件与账号有关的文件有/etc/passwd、/etc/shadow和/etc/group。可以使用vi或其他编辑器来更改它们,也可以使用专门的命令来更改。账号的管理实际上就是对这几个文件的内容进行添加、修改和删除记录行的操作,不管以哪种形式管理账号,了解这几个文件的内容都十分必要。/etc/passwd文件/etc/passwd帐号文件是账号管理中最重要的一个文件,是一个纯文本文件。每一个注册用户在该文件中都有一个对应的记录行,这一记录行记录了此用户的必要信息。例如,下面是/etc/passwd文件的实例。[root@Candy~]#cat/etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin……pulse:x:499:496:PulseAudiodaemon:/:/sbin/nologinUser:/var/lib/nfs:/sbin/nologinhaldaemon:x:68:68:HALdaemon:/:/sbin/nologingdm:x:42:42::/var/gdm:/sbin/nologinBob:x:500:500::/home/Bob:/bin/bashpasswd文件格式账号名称:密码:UID:GID:个人资料:主目录:Shell每个字段的说明如下:(1)账号名称:用户登录Linux系统时使用的名称。(2)密码:这里的密码是经过加密后的密码,而不是真正的密码,若为“x”,说明密码已经被移动到shadow这个加密过后的文件。(3)UID:用户的标识,是一个数值,Linux系统内部使用它来区分不同的用户。通常Linux对于UID有几个限制,具体如下。①0为系统管理员,即root用户,所以新建另一个系统管理员账号时,可以将该账号的UID改成0即可。②1~500为保留给系统使用的ID,其实1~65534之间的账号并没有不同,也就是除了0之外,其他的UID并没有区别,但将500以下的ID留给系统作为保留账号是一个好习惯。③500~65535在Fedora中是给一般使用者用的,passwd文件最后一行的记录Bob用户的UID就是500。(4)GID:用户所在组的标识,是一个数值,Linux系统内部使用它来区分不同的组,相同的组具有相同的GID。(5)个人资料:可以记录用户的个人信息,如姓名、电话等信息。(6)主目录:root的主目录为/root,所以当root用户登录之后,当前的目录就是/root;对于其他用户通常是/home/username,这里username是用户名,用户执行“cd~”命令时当前目录会切换到个人主目录,如Bob用户的主目录为/home/Bob。(7)Shell:定义用户登录后使用的Shell版本,默认是bash。/etc/shadow/etc/shadow为用户密码文件。任何用户对passwd文件都有读的权限,虽然密码已经经过加密,但还是不能避免有人会获取加密后的密码。为了安全起见,Linux系统对密码提供了更多一层的保护,即把加密后的密码移动到/etc/shadow文件中,只有超级用户能够读取shadow文件的内容,并且Linux在/etc/shadow文件中设置了很多的限制参数。经过shadow的保护,/etc/passwd文件中每一记录行的密码字段会变成“x”,并且在/etc目录下多出文件shadow。下面是shadow文件的实例。[root@Candy~]#cat/etc/passwdroot:$1$5Q1l2HdK$6BLlVJsWPOt/bi1rcKq0o/:13954:0:99999:7:::bin:*:13954:0:99999:7:::shadow文件格式说明(1)最后一次修改时间:表示从1970年1月1日起到上次修改密码所经过的天数。(2)最小时间间隔:表示两次修改密码之间至少经过的天数。(3)最大时间间隔:表示密码还会有效的最大天数,如果是99999,则表示永不过期。(4)警告时间:表示密码失效前多少天内系统向用户发出警告。(5)不活动时间:表示禁止登录前用户名还有效的天数。(6)失效时间:表示用户被禁止登录的时间。(7)标志字段:无意义,未使用。在shadow文件中,密码字段为“*”表示用户被禁止登录,为“!”表示用户被锁定。安装Linux系统时,系统默认采用shadow来保护密码。如果安装Linux时未启用shadow,可以使用pwconv命令启用shadow。注意,用root用户登录来执行该命令,执行的结果是/etc/passwd文件中的密码字段被改为“x”,同时产生/etc/shadow文件。相反,如果要取消shadow功能,可使用pwunconv命令,但不建议这样做。命令行方式管理用户useradduseradd用于添加用户。只有超级用户root才有权使用此命令。使用useradd命令创建新的用户账号后,应利用passwd命令为新用户设置密码。一个类似的命令是adduser,也用来创建用户账号。1)添加Alice用户[root@Candy~]#useraddAliceAlice:x:501:501::/home/Alice:/bin/bash用户Alice添加成功,同时发现,使用命令useradd添加用户的同时还添加了许多其他默认设置,如用户主目录和Shell版本等。修改用户默认设置很明显在大多数情况下,用户希望修改默认设置,以满足实际的要求。比如说,想修改默认Shell版本为使用较多的/bin/bash。与添加用户的默认设置有关的文件主要是/etc/login.defs与/etc/default/useradd文件。(1)/etc/login.defs文件(2)/etc/default/useradd文件passwd1)修改用户密码通过passwd命令可以完成为新建用户设立口令。例如,超级用户要设置或改变用户newuser的口令时,可使用命令:passwdnewuser系统会提示输入新的口令,新口令需要输入两次。出于安全的原因,键入口令时不会在屏幕上回显出来。当用户使用不带参数的passwd命令时,可以修改自己的口令。如,修改用户Jim的密码属性的命令如下:[root@Candy~]#passwdJim也可以用如下命令直接修改自己的密码:[Bob@Candy~]#passwdpasswd(续)2)锁定用户帐号在系统中,有时需要临时禁止某个用户账号登录。如下命令用于锁定用户账号Jim,使其无法登录。[root@Candy~]#passwd-lJim查看Linux系统中管理用户账号的系统文件/etc/shadow,可看到其密码域的第一个字符前加了符号“!”(若系统没有密码保护则文件为/etc/passwd)。[root@Candy~]#cat/etc/shadow当然,也可修改/etc/passwd文件来锁定用户账号Jim,在该用户的passwd域的第一个字符前加一个#号注销这行记录,如要启用时再去掉#。3)解除用户账号Jim的锁定。[root@Candy~]#passwd–uJim4)删除用户的密码[root@Candy~]#passwd–dAliceRemovingpasswordforuserAlice.passwd:Success该命令删除了用户Alice的密码。usermodusermod用于改变用户的属性。1)修改Alice的UID为新的值600、所属组为admin。[root@Candy~]#usermod–u600–gadminAlice改变用户的UID时,主目录下所有该用户所拥有的文件或子目录将自动更改其UID,但对于主目录之外的文件和目录只能用chown命令手工进行设置。2)修改Alice的用户主目录。[root@Candy~]#mkdir/Alice[root@Candy~]#usermod–d/AliceAliceusermod参数较多,其具体作用说明如下:①-lname:更改账户的名称,必须在该用户未登录的情况下才能使用。②-m:把主目录的所有内容移动到新的目录。③-p密码:修改用户的密码。④-sShell:修改用户的登录Shell。chshchsh用于改变用户的Shell版本1)列出本机上所有能用的Shell名称。[root@Candy~]#chsh-l/bin/sh/bin/bash/sbin/nologin/bin/zsh2)用户自行改变预设shell版本。[root@Candy~]#chsh