您的位置:积木首页 >> 操作系统频道 >> Linux >> 正文:
标题:Red Hat Linux 5.1 安装指南(11)--系统管理
时间:2006-8-5 来源:积木网 浏览数:
本章是红帽子Linux系统的概览。这里将阐述有关该系统的一些大家或许并不十分熟悉的内容以及与其它UNIX类系统的差异。

11.1 用户,组及私有用户组

  管理用户和组历来是枯燥和乏味的。红帽子LINUX拥有若干系统工具和约定措施,相当有用,使用户和组的管理简单了许多。

  管理用户和组最为简单的方法是使用控制面板上的“UsersandGroups”模块(有关控制面板的详细信息请看第9节,9.1节上用户和组模块的详细描述)。您还可以以命令行的方式用adduser命令创建新用户。

11.1.1 Standard Users

  表81 列出了系统在安装过程中创建的标准用户(其中所列内容与/etc/passwd文件的描述是一致的)。表中的组ID号是用户所在的首要组的代号。请到11.1.3节查看有关组的知识。
User UID GID Home Directory Shell root 0 0 /root /bin/bash bin 1 1 /bin daemon 2 2 /sbin adm 3 4 /var/adm lp 4 7 /var/spool/lpd sync 5 0 /sbin /bin/sync shutdown 6 0 /sbin /sbin/shutdown halt 7 0 /sbin /sbin/halt mail 8 12 /var/spool/mail news 9 13 /var/spool/news uucp 10 14 /var/spool/uucp operator 11 0 /root games 12 100 /usr/games gopher 13 30 /usr/lib/gopher-data ftp 14 50 /home/ftp nobody 99 99 /
表81: 标准用户

11.1.2 标准用户组

  表82列出了系统安装过程中创建的标准用户组(其中就是/etc/group文件所描述的内容)。

Group GID Members root 0 root bin 1 root,bin,daemon daemon 2 root,bin,daemon sys 3 root,bin,adm adm 4 root,adm,daemon tty 5 disk 6 root lp 7 daemon,lp mem 8 kmem 9 wheel 10 root mail 12 mail news 13 news uucp 14 uucp man 15 games 20 gopher 30 dip 40 ftp 50 nobody 99 users 100 floppy 19
图表82:标准用户组

11.1.3 私有用户组

  为了使传统UNIX用户组更易于使用,红帽子LINUX使用了一种叫做私有用户组(UPG)的模式。私有用户组模式并不改变以往UNIX处理组的任一环节。它仅仅提供了一种新的管理用户组的方式。您一旦创建了一个新用户,默认的就会拥有一个唯一的用户组。该模式的原理如下:

私有用户组

  系统中的每一个用户都拥有并属于一个首要组。

  umask = 002

  传统UNIX的umask值是022,这样就可以防止同属于该组的其他用户以及任何别的组的用户修改该用户的文件。既然每个用户都拥有并属于一个自己的私有组,这种“组保护模式”不在需要了。将umask值设置为002就可以阻止用户篡改他人的私有文件。 umask值是在/etc/profile文件中设置的。

  目录的SGID位如果您设置了目录的SGID位(使用命令:chmodg+s目录名),在该目录中创建的文件的属组将与该目录的属组相同。大多数站点都喜欢为每一个主要的项目创建用户组,然后把用户分配到相应的组中去。在以往,管理文件的存取是困难的,尽管用户创建的文件的属组会被设置成该用户所属的首要组。但是,也恰恰如此,当某个用户工作于多个工程项目时,将某个文件的属主设置为与工程相关的组。然而在用户私有组(UPG)模式下,文件将会根据工程的不同被设为相应的属组,这样会使管理多用户组的工程相当简单。让我们举个例子,比如说您有一个庞大的工程名字叫做devel,很多人要在名为devel的目录下编辑文件。创建一个用户组名为devel,用chgrp将devel目录的属主设置为devel,把所有参加devel工程的人员的用户组设置为devel。这样所有属于devel组的用户就可以在devel目录下创建文件了。由于所建文件的属组均会被自动设置为devel,则所有属于devel组的用户都可以编辑其中的文件了。如果您有多个类似于devel的工程,并且有用户要参与多个的话,用户将没必要当自己要从一个项目转到另一个时而改变自己的组或umask值了。因为,每个工程目录上的SGID位将为文件进行自动的属组设置。既然每个用户的HOME目录的属主是该用户而属组是该用户的私有组,设置HOME目录的SGID位是安全的。然而由于创建文件的属组默认被设置为用户的首要组,因此,这种情形下设置SGID位似乎是多余的。

11.1.3.1 用户私有组

  由于用户私有组模式(UPG)是新东西,许多人对它提出质疑。人们怀疑它的存在的必要性。以下将对其作出解释。

  打个比方,您想使一些人编辑/usr/lib/emacs/site-lisp下的文件。您信任这些人,让他们任意操纵这个目录下的文件,可当然不是信任所有的人。

  于是,您键入:

  chown -R root.emacs /usr/lib/emacs/site-lisp

  然后把合适的用户增加到该组中。

  为使用户能真正在目录下创建文件,执行:
  chmod 775 /usr/lib/emacs/site-lisp

  但是当用户在该目录下创建新文件时,它的属主被设置为该用户的默认组(通常为users)。为防止这种默认设置,您应键入:
chmod 2775 /usr/lib/emacs/site-lisp

  但是文件的权限必须被设置为664才可以使emacs组的其他用户来编辑它。这只要将umask值设置为002就可以了。

  好了,一切都很正常,但是有一点例外,那就是如果您的默认组是“users”的话,您在您的HOME下创建的每一个文件都可被同属于“users”的用户改写。

  为了防止这种操作,您应使每一个用户将其默认组设置为一个该用户所私有的用户组。

  至此,通过设置umask值为002和分配每个用户一个私有的用户组为默认组,您就可以轻而一举的建立用户无须任何其他操作就可以方便使用的组了。您所要做的仅仅是创建组,增加用户到组,然后象以上所述的那样用chown和chmod设置组目录。

11.2 基于PAM的用户认证

  任何要授予用户特权的程序都要能够进行用户认证。当您登入系统时,您需要提供用户名和口令,而后登入进程据此以检验登入的合法性---确认您就是该用户。还有除口令认证之外的其他认证形式,而且口令的存储方式也是各不相同的。

  PAM(可插拔认证模块)方式允许系统管理员设置多种认证措施而无须重新编译要进行认证的程序。使用PAM,您通过编辑一个配置文件来决定认证模块如何插入到程序之中。大多数红帽子LINUX用户无须改动这个配置文件。因为如果使用RPM来安装程序的话,系统会自动做有关改动。但是,如果您想定制认证模块的话,就需要理解配置文件内容。 11.2.1 PAM 模块

  PAM定义了四种类型的模块。auth模块提供实际的认证过程,可能是提示口令输入并检查输入的口令,设置保密字如用户组或KERBEROS通行证。account模块负责检查并确认是否可以进行认证(比如,帐户是否到期,用户此时此刻是否可以登入,等等)。 password模块被用来设置口令。一旦用户认证通过,session模块将被用来做使用户使用其帐户前的初始化工作,如安装用户的HOME目录啦,使能用户的电子邮箱啦,等等。

  这些模块可以堆叠,多次使用。比如:rlogin通常使用至少两种认证方法,如果“rhosts” 认证成功了,就允许建立连接,否则还要进行标准的口令认证。

  随时可以加入新的模块,而PAM感知的程序可以被配置来使用它。举个例子,如果您有一个一次性口令计算系统,可以写出一个模块来(系统中包含有如何书写模块的文档资料),PAM感知的程序无须重新编译就可以使用这个新的一次性口令计算器。

11.2.2 服务

  每个使用PAM的程序定义它自己的服务名称。login程序定义其服务类型为login,ftpd程序定义其服务类型为ftp,等等。一般来说,服务类型就是存取该服务的程序的名字,而不是提供服务的程序。

11.2.3 配置文件

  目录/etc/pam.d被用来配置所有的PAM应用程序。(在早期的PAM版本中用的是 /etc/pam.conf;但是若/etc/pam.d不存在的话,仍旧会找/etc/pam.conf,不过记住,这是一个过时的文件。)。每一个应用程序(确切的说是服务)都有它自己的配置文件。一个真实的文件可能如下:

#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_pwdb.so shadow nullok
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so shadow
nullok use_authtok
session required /lib/security/pam_pwdb.so

  第一行是注释。任何以#开头的行都是注释。以下的三行排列着用于login认证的三个模块其中第一行用以确认用户是否以root登入,允许登入的tty被列在文件/etc/securetty 中(如果文件存在的话)第二行将会使用户被提示输入口令并校验口令。第三行表示查文件/etc/nologin是否存在,如果存在就显示其内容,而且如果用户不是root,则禁止其登入。即便第一个模块失败了,也要完成三个模块的校验。这是一种安全上的考虑 ---这种设计永远不要让用户知道他或她们为什么会被拒绝,否则会让其更容易突破认证。您可以将“required”改成“requisite”来修改这种认证方式。也就是说,如果有任何“requisite”模块以失败返回,整个PAM认证将终止再调用其它模块也以失败返回。

  第五行表示任何必要的记帐信息要被记载。例如,如果设置使用影子口令,pam_db.so 模块将被执行以检查该帐户是否失效或者用户口令是否超期而需要修改。

  第六行(该行需要折行来写)用以指定如果login程序改变用户的口令,它应当使用 pam_pwdb.so来完成。(这仅在auth模块检测到口令需要被改变时,例如一个影子口令已经过期时才使用) 最后一行表示pam_pwdb.so模块将被用来管理当前的会话过程。而目前该模块什么也不做;它可以被替换为别的所需的模块。

  要注意配置文件中每一行的顺序不是任意的。尽管required模块以什么顺序被调用并没有多大关系,但是还有其它一些控制符,其中optional很少在红帽子LINUX中使用,而 sufficient 和requisite就要求行的顺序不能颠倒。

  让我们来看一下rlogin的认证配置:

auth required /lib/security/pam_securetty.so
auth sufficient /lib/security/pam_rhosts_auth.so
auth required /lib/security/pam_pwdb.so shadow nullok
auth required /lib/security/pam_nologin.so

  这和login的描述极为相似,但是其中比login的多一行模块描述,而且模块的顺序也不同。首先,pam_securetty.so模块将禁止以root从不安全的终端登入。这将有效的阻止任何root方式的远程登入。如果您不想禁止的话(在这种情况下,我们建议您的机器要么没和Internet 相连,要么呆在一个配置良好的防火墙后面),把这一行删掉就是了。其次,pam_nologin.so 模块将检查/etc/nologin,如上所述。第三点,如果pam_rhosts_auth.so模块认证通过,PAM就立即以成功返回而不再做任何口令校验。如果pam_rhosts_auth.so认证失败,该失败将被忽略,继续调用pam_pwdb.so模块进行正常的口令认证。如果您在securetty认证失败后不想让系统继续以口令询问的话,您可以把pam_securetty.so模块的required 改为 requisite。

11.2.4 影子口令

  pam_pwdb.so模块会自动检测您是否使用影子口令以做出相应的调整。请查看第 11.3 节获得更多有关操纵影子口令工具的信息。

11.2.5 更为详尽的信息

  本章描述的仅仅是PAM的介绍性知识。更多的资料位于系统的/usr/doc/pam*,其中包含了系统管理员指南,模块书写手册,应用系统开发者手册,和PAM标准说明DCE-RFC 86.0。同时,这些文档也可以从红帽子的WEB站点获得,http://www.redhat.com/linux-info/pam/.

11.3 影子工具

  对影子口令的支持在红帽子LINUX5.1中得到了显著的增强。影子工具包(shadow-utils)中包含了好几个工具支持以下功能:

传统口令与影子口令之间的转换工具(pwconv, pwunconv)
验正口令,组和相应的影子文件(pwck, grpck)
以符合工业标准的方法增加,删除和修改用户帐户(useradd, usermod,userdel)
以符合工业标准的方法增加,删除和修改用户组(groupadd, groupmod, groupdel)
以符合工业标准的方法管理文件/etc/group 请注意:还有其它一些与这些工具相关的有趣之处:
无论是否被设置为影子模式,工具均能正常使用
工具被做稍许修改以支持红帽子软件的用户私有组模式。有关这些修改的描述请看useradd的man手册。有关用户私有组的详细信息,请看第 11.1.3. 节

adduser脚本被替换为指向/usr/sbin/useradd的连接


11.4 创建定制的核心

  由于LINUX2.0.x内核引入了模组化的概念,创建定制的核心与以往有很大的不同。在过去您要是想存取特定的硬件设备或文件系统,您得重新编译内核以把新增功能加入其中。对于一些硬件配置,会使核心迅速增大到难以容忍的地步。其实一些功能也只是偶尔用的着,将期编连入核心对系统资源来说是一种低效率的使用。LINUX 2.0.x以上的内核将支持按需的动态装载特定硬件或文件系统的模组化驱动程序。

  有关内核模组的详细信息可以在第9, 章,第 9.6. 节找到

11.4.1 1 创建模组化的内核

  只有红帽子LINUX/INTEL和LINUX/SPARC支持模组化内核;红帽子LINIX/ALPHA的用户必须建立一个单一的系统内核(请查看11.4.3).

  为获得模组化内核所带来的强大功能和可扩展性,下面将提供给您这方面的知识。如果您不想利用模组化的优势,请看第11.4.3节有关创建和安装单一内核的说明。我们这里假设您已经安装了核心的头文件和源代码,并假设所有的命令均在/usr/src/linux 目录下执行。

  重新建立一个核心需要将源代码树置于一种完整和一致的状态。因此,我们推荐您首先执行命令make mrproper。它将清除目录下所有配置文件和先前生成核心时产生的中间文件。现在,您需要创建一个配置文件以决定将要生成的核心要包括哪些内容。根据您的硬件和个人选择不同有三种方法来配置核心。

  make config 这是一个交互式的程序。由它来提供各种功能,由您自己回答 Y(要),N(不要),或则M(要,但不连入核心,而以模组话的形式包含)。

  make menuconfig 这是一个彩色用户界面,菜单驱动的程序。各种功能部件以菜单的形式分类列出,就象安装红帽子LINUX时一样,您选择需要包含的部件,也就是针对每个条目在 Y(要),N(不要),或者M(以模组的形式加入)的位置点选。

  make xconfig 这是一个X视窗程序。功能部件分层列于菜单中,用鼠标来进行选择,选择方法同上。

  请注意:为了能够使用kerneld(详情请看第9.6节)和核心模组,您必须在配置时对“kerneld support”和“module version(CONFIG_MODVERSIONS)support”选择Yes.

  请注意:如果您是在一台使用Intel兼容CPU芯片(例如由Cyrix, AMD生产的)的机器上建立核心,我们推荐您在“Processor type of”上选择386。

  如果您想使用先前按照以上方法创建的配置文件(/usr/src/linux/.config)来建立核心,那么您就不要执行make mrproper 和 make config命令而直接执行makedep再接着执行 make clean为最后编译来进行文件树的配置。

  下一步要讲述源代码的编译,生成最终可以用以boot的核心。下面的方法将是在遇到不当时最易恢复的方法。如果您对其它的方法感兴趣,可以在Kernel-HOWTO或/usr/src/linux目录下的Makefile中找到详细的信息。

  用make boot命令建立核心
  用make modules命令建立您配置的模组
  将老的模组移到其它地方:
  rm -rf /lib/modules/2.0.29-old
  mv /lib/modules/2.0.29 /lib/modules/2.0.29-old

  当然,如果您已经升级了核心,将2.0.29替换为您正在使用的就行。

  安装新模组(即便您没有建立任何模组),使用命令? make modules_install.

  如果您有一块SCSI卡而且想以模组化的驱动程序访问它,就要建立一个新的initrd映相文件(请看第11.4.2节; 注意在定制的核心中以模组化方式使用SCSI卡的驱动程序是有实际的原因的)。

  为了防止新建核心中可能出现的错误,应当准备一个冗余的内核以备。将一个核心包括在LILO的选单中十分简单。您只需将/boot目录下的原来的核心文件重新命名,把新生成的核心拷贝到/boot下,在/etc/lilo.conf中加入相应的几行信息,再执行/sbin/lilo 就可以了。下面是随红帽子LINUX而带的默认的/etc/lilo.conf:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=100
image=/boot/vmlinuz
label=linux
root=/dev/hda1
read-only

  现在您需要更新/etc/lilo.conf。如果您创建了新的initrd映相,就必须告诉LILO去使用它。在这个例子中我们在/etc/lilo.conf后面添加了四行以表示新增的可以boot的核心。我们将/boot/vmlinuz重新命名为/boot/vmlinuz.old并改变其标签为old。 我们同样也为新核心增加了initrd一行:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=100
image=/boot/vmlinuz
lab

[1] [2] [3] 下一页


(责任编辑:笑虎)
最近更新
今日推荐
热点文章