• 沒有找到結果。

Linux操作系统应用与安全 - 万水书苑-出版资源网

N/A
N/A
Protected

Academic year: 2021

Share "Linux操作系统应用与安全 - 万水书苑-出版资源网"

Copied!
73
0
0

加載中.... (立即查看全文)

全文

(1)第 8 章 常用服务器配置与管理. z z. 本章能力目标 掌握 Linux 系统下常用服务器的功能与配置 掌握 Linux 系统下常用服务器的管理方法. 8 z z z z z z. 本章要点内容 Samba 服务器的安装、配置和管理 NFS 服务器的安装、配置和管理 Apache 服务器的安装、配置和管理 VSFTP 服务器的安装、配置和管理 DNS 服务器的安装、配置和管理 DHCP 服务器的安装、配置和管理. 8.1 Samba 服务器 8.1.1. Samba 概述. 1.Samba 的作用 建立计算机网络的目的之一就是为了能够共享资源,如今接入网络的计算机大多数使用 Windows 操作系统。为了能让使用 Linux 操作系统的计算机和使用 Windows 操作系统的计算 机共享资源,需要使用 Samba 工具。 Samba 是在 Linux/UNIX 系统上实现 SMB(Session Message Block)协议的一个免费软件, 以实现文件共享和打印机服务共享,它的工作原理与 Windows 的网上邻居类似。 SMB 使 Linux 计算机在网上邻居中看起来如同一台 Windows 计算机。Windows 计算机的 用户可以“登录”到 Linux 计算机中,从 Linux 中复制文件,提交打印任务。如果 Linux 运行 环境中有较多的 Windows 用户,使用 SMB 将会非常方便。 如图 8-1 所示,图中的服务器运行 Samba 服务器软件,其操作系统是 Linux。该服务器通过 Samba 可以向局域网中的其他 Windows 主机提供文件共享的服务。同时,在 Linux 服务器上还 连接了一个共享打印机,打印机也通过 Samba 向局域网的其他 Windows 用户提供打印服务。 2.Samba 的组成 给 Windows 客户提供文件服务是通过 Samba 实现的,这套软件由一系列的组件构成,主 要的组件有: (1)smbd(SMB 服务器)。smbd 是 Samba 服务守护进程,是 Samba 的核心,时刻侦听 网络的文件和打印服务请求,负责建立对话进程、验证用户身份、提供对文件系统和打印机的.

(2) 第8章. 常用服务器配置与管理. 访问机制。该程序默认安装在/usr/sbin 目录下。. 图 8-1. 由 Samba 提供文件和打印共享. (2)nmbd(NetBIOS 名字服务器)。nmbd 也是 Samba 服务器的守护进程,用来实现 “Network Browser” (网络浏览服务器)的功能,对外发布 Samba 服务器可以提供的服务。用 户甚至可以用 Samba 作为局域网的主浏览服务器。 (3)smbclient(SMB 客户程序)。是 Samba 的客户端程序,客户端用户使用它可以复制 Samba 服务器上的文件,还可以访问 Samba 服务器上共享的打印机资源。 (4)testparm。该程序用来快速检查和测试 Samba 服务器配置文件 smb.conf 中的语法 错误。 (5)smbtar。smbtar 是一个 Shell 脚本程序,它通过 smbclient 使用 tar 格式备份和恢复一 台远程 Windows 的共享文件。 还有其他工具命令用来配置 Samba 的加密口令文件、配置用于 Samba 国际化的字符集。 在 Linux 上,Samba 还提供了挂载和卸载 SMB 文件系统的工具程序 smbmount 和 smbumount。 8.1.2. Samba 服务器的安装. 用户在安装 Red Hat Linux 9 的时候,如果选择了安装所有软件包,那么 Samba 就已经安 装上了;如果系统没有安装,则可以从光盘的 Red Hat/RPMS 目录下安装。 1.查询 Samba 是否已经安装 Red Hat Linux 9 中提供了 Samba 服务器的 RPM 软件安装包,这里可以使用 rpm 命令来检 查是否安装或已安装。安装 Samba 服务器需要以下软件包:samba-2.2.7a-7.9.0.i386.rpm,Samba 服务器软件。samba-common-2.2.7a-7.9.0.i386.rpm,Samba 服务器与客户端都需要的文件。 samba-client-2.2.7a-7.9.0.i386.rpm,Samba 客户端软件。 [root@rh9 root]# rpm -qa |grep samb //检查 Samba 的相关软件是否已经安装。 samba-2.2.7a-7.9.0 samba-common-2.2.7a-7.9.0 samba-client-2.2.7a-7.9.0 //Samba 客户端软件。. 2.安装 Samba 如果输出如上所示的软件名称,则说明已经安装,否则可以使用下面的命令安装 Samba 服务器软件。 注意:要先安装 samba-common-2.2.7a-7.9.0 软件包,才能顺利完成另外 2 个软件包的安装。 187.

(3) Linux 操作系统应用与安全 [root@rh9 dhcp]# mount /mnt/cdrom [root@rh9 dhcp]# cd /mnt/cdrom/Red Hat/RPMS [root@rh9 root]# rpm -ivh samba-common-2.2.7a-7.9.0.i386.rpm warning: samba-common-2.2.7a-7.9.0.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing... ########################################### [100%] 1:samba-common ########################################### [100%] [root@rh9 root]# [root@rh9 root]# rpm -ivh samba-2.2.7a-7.9.0.i386.rpm warning: samba-2.2.7a-7.9.0.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing... ########################################### [100%] 1:samba ########################################### [100%] [root@rh9 root]# rpm -ivh samba/samba-client-2.2.7a-7.9.0.i386.rpm warning: samba-client-2.2.7a-7.9.0.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing... ########################################### [100%] 1:samba-client ########################################### [100%]. 安装了 Samba 的上述公用软件包、服务器软件包和客户端软件包后就可以了,但为了配 置方便以及利用 Red Hat Linux 9 的新特性,建议再安装 redhat-config-samba-1.0.4-1 和 samba-swat-2.2.7a-7.9.0 两个软件包。这两个软件包在 Red Hat Linux 9 安装光盘里都有,其中 redhat-config-samba-1.0.4-1 在第 1 张光盘里,samba-swat-2.2.7a-7.9.0 在第 2 张光盘里,安装方 法和上面的相同。redhat-config-samba-1.0.4-1 是 Samba 配置工具,使用它可以很方便地配置 Samba。samba-swat-2.2.7a-7.9.0 是用来修改 Samba 配置文件的。 8.1.3. Samba 服务器的启动/停止. 安装并配置好 Samba 后,可以在 Linux 终端将 Samba 启动,也可通过终端命令行将已经 启动的 Samba 服务器关闭。若要启动 Samba,必须以管理员身份登录 Linux,如果是以普通用 户身份登录 Linux,可以在终端使用命令“su -”暂时切换到系统管理员身份。 Samba 服务器的启动、停止,以及当前所处状态的查询等操作,都可以通过 service 命令 来实现。 [root@rh9 root]# service smb 用法:/etc/init.d/smb {start|stop|restart|reload|status|condrestart} [root@rh9 root]# service smb start 启动 SMB 服务: [ 确定 ] 启动 NMB 服务: [ 确定 ] [root@rh9 root]# service smb stop 关闭 SMB 服务: [ 确定 ] 关闭 NMB 服务: [ 确定 ] [root@rh9 root]# service smb status smbd 已停 nmbd 已停. 2.使用 chkconfig 命令 若要系统每次启动时自动开启 Samba 服务,可以使用 chkonfig 命令,下面的例子表示在 188.

(4) 第8章. 常用服务器配置与管理. 系统进入第 3 和第 5 个级别时自动开启 Samba 服务。 [root@rh9 root]# chkconfig chkconfig 版本 1.3.8 - 版权 (C) 1997-2000 Red Hat, Inc. 在 GNU 公共许可的条款下,本软件可以被自由发行。 用法: chkconfig --list [name] chkconfig --add <name> chkconfig --del <name> chkconfig [--level <levels>] <name> <on|off|reset>) [root@rh9 root]# chkconfig --level 35 smb on [root@rh9 root]# chkconfig --list smb smb 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭. 3.使用 ntsysv 命令 也可以使用命令 ntsysv 打开图形化的命令行界面来设置,如图 8-2 所示。使用“Tab”键 可以在“服务”、“确定”和“取消”之间切换,在“服务”窗口中使用方向键“↓”和“↑” 可以将光标移动到想要设置的服务,然后使用“空格键”设置或者取消需要自动启动的服务(前 面有“*”标志的服务将在每次开机时自动启动)。另外,按照界面下方的提示按“F1”键, 可以获得有关某个服务的详细说明。. 图 8-2 设置系统服务(1). 如果是在图形界面下,除了使用上面介绍的方法外,还可依次单击“主菜单”→“系统 设置”→“服务器设置”→“服务”选项,打开图 8-3 所示的界面,在该图形界面下用户也可 以很方便地设置选中的服务。 8.1.4. Samba 服务器的配置文件. Samba 服务器最主要的配置文件是/etc/smb/smb.conf,该文件中以“;”或“#”符号开头 的都为注释,该行的内容会被忽略而不生效。文件中以“#”开头的行是指说明,而以“;”开 头的行则是表示目前该项停用,但可以根据今后的需要去掉前面的“;”使之生效。配置文件 中的每一行都是以“设置项目=设置值”的格式来表示。 配置文件 smb.conf 主要是由两个部分所组成:Global settings 和 Share Definition。前者是 与 Samba 整体环境有关的选项,这里的设置项目适用于每个共享的目录;后者是针对不同的 共享目录的个别设置。在开始修改配置文件之前,必须先了解下列重点内容。. 189.

(5) Linux 操作系统应用与安全. 图 8-3. 设置系统服务(2). 1.Global settings 本部分参数主要有基本设置参数、安全设置参数、网络设置参数、文件设置参数、打印 机设置参数、用户权限设置参数和日志设置参数等。 (1)workgroup = MYGROUP 此项用来设置在 Windows 操作系统的“网上邻居”中将会出现的 Samba 服务器所属的群 组,默认为 MYGROUP,不区分大小写。 (2)server string = Samba Server 此项用来设置 Samba 服务器的文字说明,以方便客户端的识别,默认为“Samba Server” 。 (3)hosts allow = 192.168.1. 192.168.2. 127. 该项用来设置哪些主机允许访问 Samba 服务器,默认为全部。如果设置的项目超过一个, 必须以逗号、空格或制表符来分隔开。“hosts allow = 192.168.1. 192.168.2. 127.”表示允许 来自 192.168.1.*、192.168.2.*和 127.*.*.*的主机连接。 另外,也可以采用其他的一些表示方法,如:“hosts allow =192.168.1. except 192.168.1.5” 表示允许来自 192.168.1.*的所有主机连接,但排除了 192.168.1.5。“hosts allow = 192.168.1.0/ 255.255.255.0”表示允许来自 192.168.1.0 子网的所有主机连接。 “hosts allow = host1,host2”表 示允许名字是 host1 和 host2 的主机连接。“hosts allow = @cqcet.cn”表示允许来自 cqcet.cn 网 域的所有主机连接。 (4)printcap name = /etc/printcap 此项是用来设置开机时自动加载的打印机配置文件的名称和路径。 (5)load printers = yes 表示是否允许打印机在开机时自动加载到浏览列表(Browsing List),以支持客户端的浏 览功能,即是否共享打印机。 (6)printing = cups 此项用来指定打印系统的类型,在一般情况下并不需要修改此项。目前支持的打印系统 有 bsd、sysv、plp、lprng、aix、hpux、qnx 和 cups。 (7)guest account = pcguest pcguest 为用户名,可更改去掉前边的“;”让用户以 pcguest 身份匿名登录,但要保证 /etc/passwd 中有此账号。 190.

(6) 第8章. 常用服务器配置与管理. (8)log file = /var/log/samba/%m.log 此项为所有连接到 Samba 服务器的计算机建立独立的记录日志。其默认保存的位置是 /var/log/samba/。 (9)max log size = 0 此项设置每个记录日志的大小上限,单位是 KB。默认值为 0,表示没有大小的限制。Samba 服务器会定期检查其上限,如果超过此设置值,就会重新命名此文件,并加上“.old” 扩展名。 (10)security = user 此项指定 Samba 服务器使用的安全等级为 user 级。此处可以用的安全等级有 share、user、 server 和 domain 共 4 类。它们的区别,请参看本书稍后的内容。 (11)password server = <NT-Server-Name> 此项默认不使用,而且只有在上个选项设置为“security = server”时才生效。它用来指定 密码验证服务器的名称,此处必须使用 NetBIOS 名称,默认是网络中的域控制器。也可以使 用“password server=*”的方式自动寻找网络中可用的域控制器。 (12)password level = 8 这个选项是为了避免 Samba 服务器和客户端之间允许的密码最大位数不同,从而产生的 错误。 (13)username level = 8 这个选项是为了避免服务器和客户端之间允许账号最大位数不同而产生的错误。 (14)encrypt passwords = yes 此项表示是否指定用户密码以加密的形式发送到 Samba 服务器。由于目前 Windows 操作系 统都已经使用加密的方式来发送密码,因此建议启用该选项。否则,要改变 Windows 注册表。 (15)smb passwd file = /etc/samba/smbpasswd 该选项用来指定 Samba 服务器使用的密码文件路径。默认情况下,该文件并不存在,需 要用户自己建立。 (16)ssl CA certFile = /usr/share/ssl/certs/ca-bundle.crt 该选项用来指定包含所有受信任 CA 名称的文件。当需要配置 Samba 服务器支持 SSL 时, 必须读取这个文件的内容。在默认情况下,该选项未被启用。 (17)unix password sync = yes 当 Samba 服务器密码文件 smbpasswd 中的加密密码内容修改时,用这个选项将 Samba 和 UNIX 中的密码进行同步。在默认情况下使用该功能,在运行密码同步之后,旧的 UNIX 密码 将不能再用于登录系统。 (18)passwd program = /usr/bin/passwd %u 此选项默认时启用,用来指定设置 UNIX 密码的程序,默认值是“/usr/bin/passwd %u”, 其中“%u”表示用户的名称。 (19)passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all *authentication*tokens*updated*successfully* 设置用户把 Linux 密码转换为 Samba 服务器密码时,屏幕出现的指示字符串,以及与用 户产生的交互窗口。如果使用默认值,则屏幕上显示如下字符串。 New password: 191.

(7) Linux 操作系统应用与安全 Retype new password: passwd: all authentication tokens successfully.. (20)pam password change = yes 此项表示可以使用 PAM 来修改 Samba 客户端的密码。PAM 可以允许管理员设置多种验 证用户身份的方式,而不需要重新编译用于验证的程序。 (21)username map = /etc/samba/smbusers 此项指定一个配置文件,在此文件中包含客户端与服务器端上用户的对应数据。可以将 同一个 UNIX 账号名对应到多个 Samba 账号,账号之间用空格间隔。如果每个客户端用户在 Samba 服务器上都拥有单独的 Samba 账号,则该项不需设置。默认情况下,该选项未启用。 (22)include = /etc/samba/smb.conf.%m 允许 Samba 服务器使用其他的配置文件,可以方便管理员事先为不同的主机设计合适的 配置文件。默认情况下,该选项未启用。 (23)obey pam restrictions = yes 该选项用来设定是否采用 PAM 账号及会话管理。默认情况下,该选项未启用。 (24)socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 此选项在编写 TCP/IP 程序时相当重要,可以借此调整 Samba 服务器运行时的效率。可以 使用“man setsockopt”命令来得到详细的内容。 (25)interfaces = 192.168.12.2/24 192.168.13.2/24 该选项可以使 Samba 服务器监视多个网络接口。在设置时,等号右边可以使用 IP 地址、 网络接口名、或者是 IP/子网掩码的组合。 (26)remote announce = 192.168.1.255 192.168.2.44 此项允许 NMDB(NetBIOS 域名服务器)定期公布 Samba 服务器的 IP 地址和群组名称到 远程的网络或主机。默认情况下,该选项未启用。 (27)local master = no 此选项表示是否允许 nmbd 担任 Local Master 浏览器的角色,在默认的配置下并不使用此 功能。如果设置值为“no”,则 nmbd 将不会成为子网中的 Local Master 浏览器,但是如果设 置值为“yes” ,也不是表示 nmbd 一定会是 Local Master 浏览器,而是指 nmbd 将会参加 Local Master 浏览器的选举。 (28)os level = 33 此选项的设置值是用来决定 Local Master 浏览器选举时的优先次序,数值越高表示优先次 序越高,一般来说,Samba 服务器都具有很高的优先权,但是在默认的配置下并不使用此功能。 (29)domain master = yes 使用这个选项后,表示这台 Samba 服务器可担任网络中的 Domain Master Browser,它便 可以集中来自所有子网的浏览列表。但如果网络中已有域控制器在担任此工作,则不可使用这 个选项,以避免发生错误,在默认的配置下并不使用此功能。 (30)preferred master = yes 使用这个选项后,Preferred Master 可以在 Samba 服务器启动时,强制进行 Local Browser 选择,同时 Samba 也会享有较高的优先级,但在默认配置下并不使用此功能。 (31)domain logons = yes. 192.

(8) 第8章. 常用服务器配置与管理. 这个选项可以决定是否将 Samba 服务器当成 Windows 95 工作站登录时的账号验证主机, 默认并不使用此功能。 (32)logon script = %m.bat 这个选项可以设置主机登录时自动运行的批处理文件。这个文件需符合 DOS 兼容的换行 格式,同时也需要先使用“domain logons”选项才可生效,但在默认的配置下并不使用此功能。 (33)logon script = %U.bat 这个选项可以设置用户登录时,自动运行的批处理文件。这个文件需符合 DOS 兼容的换 行格式,同时也需先使用“domain logons”选项才可生效,但在默认的配置下并不使用此功能。 (34)logon path = \\%L\Profiles\%U 这个选项可以设置用户在登录 Samba 服务器时所使用的个人配置文件(Profile)的位置。 默认值中的“%L”表示这台服务器的 NetBIOS 名称,而“%U”是指用户名称,但在默认的 配置下并不使用此功能。 (35)wins support = yes 这个选项可用来决定是否将这台 Samba 服务器当成 WINS 服务器,除非环境中包含多个 子网,否则不建议使用此项目。另外,在同一个网络中最多可以使用一台 WINS 服务器,而 默认并不使用此功能。 (36)wins server = w.x.y.z 这个选项可用来设置 WINS 服务器的 IP 地址,而这台 WINS 服务器必须已在 DNS 服务 器中登记,在默认的配置下并不使用此功能。注意一点,Samba 服务器可作为 WINS 服务器 或 WINS 客户端,但不可同时担任这两种角色。 (37)wins proxy = yes 这个选项可用来决定是否将此 Samba 服务器当成 WINS 代理,在默认的配置下并不使用 此功能。WINS 代理是指代替非 WINS 客户端向 WINS 服务器请求域名解析查询的计算机,因 此在每个网段中至少要有一台 WINS 服务器。 (38)dns proxy = no 该选项可用来决定是否将此 Samba 服务器当成 DNS 代理,默认的配置下并不使用此功能。 DNS 代理如果发现尚未注册的 NetBIOS 名称,可以决定是否将由 DNS 得到的名称当成 NetBIOS 名称。 (39)preserve case = no 该选项可以用来决定新建文件时,文件名称大小写是否与用户输入相同,或自己指定, 在默认的配置下并不使用此功能。 (40)short preserve case = no 该选项可用来决定新建文件名符合 DOS 8.3 格式的文件时,文件名是否都用大写,或自 己指定,在默认的配置下并不使用此功能。 (41)default case = lower 该选项可用来决定新建文件时文件名称的大小写,在默认的配置下并不使用此功能。 (42)case sensitive = no 该选项可以决定是否将大小写的文件名称视为不同,在默认的配置下并不使用此功能。 但如果在 Samba 中,要以中文名称来为资源命名,则此处设置的值必须是“no”。 193.

(9) Linux 操作系统应用与安全. 2.Share Definitions 以下包含许多以中括号([])开头的区域,而每个区域各代表一个共享资源,也就是在 Windows 客户端上启动“网上邻居”时,会出现的共享文件夹,以下将以配置文件中默认的 内容来说明配置选项的功能。 (1)[home] 当用户请求一个共享时,服务器将在存在的共享资源段中去寻找,如果找到匹配的共享 资源段,就使用这个共享资源段。如果找不到,就将请求的共享名看成是用户的用户名,并在 本地的 password 文件里找这个用户,如果用户名存在且用户提供的密码是正确的,则以这个 home 段克隆出一个共享提供给用户。这个新的共享的名称是用户的用户名,而不是 home,如 果 home 段里没有指定共享路径,就把该用户的主目录(home directory)作为共享路径。 通常的共享资源段能指定的参数基本上都可以指定给[home]段。但一般情况下[home]段有 如下配置就可以满足普通的应用。 comment = Home Directories browseable = no writable = yes valid users = %S create mode = 0664 directory mode = 0775 map to guest = bad user. //共享目录的文字描述。 //不允许浏览主目录,即该目录内容只对有权限的用户可见。 //允许用户写入目录。 //允许访问该目录的用户,%S 表示当前登录的用户。 //新建文件的缺省许可权限。 //新建目录的默认权限。. 当用户输入不正确的账号和密码时,可以利用“map to guest”选项来设置处理的方式, 但在使用此选项前,必须将“security”选项设为“user”、“server”或“domain”。可用的设置 值如表 8.1 所示。 表 8.1 map to guest 的可选值 设置值. 说明. never. 拒绝访问,该项最安全. bad user. 如果输入的用户名正确,但密码错误,允许以 guest 身份访问. bad password. 如果输入的用户名和密码都错误,仍然允许以 guest 身份访问. 注意,如果在[home]段里加了“guess access = ok” ,所有的用户都可以不要密码就能访问 所有的主目录。 (2)[netlogon] comment = Network Logon Service path = /usr/local/samba/lib/netlogon guest ok = yes writable = no share modes = no. //共享目录的文字描述。 //共享目录的本机路径。 //连接时不需要输入密码。 //不允许写入共享目录。 //是否允许目录中的文件在不同的用户之间共享。. (3)[Profiles] path = /usr/local/samba/profiles browseable = no guest ok = yes. (4)[printers]. 194. //共享目录的本机路径。 //是否允许浏览目录。 //连接时是否需要密码。.

(10) 第8章. 常用服务器配置与管理. 该段用于提供打印服务。如果定义了[printers]这个段,用户就可以连接在/etc/printcap 文件 里指定的打印机。 当一个连接请求到来时,smbd 去查看配置文件 smb.conf 里已有的段,如果和请求匹配就 用那个段,如果找不到匹配的段,但[home]段存在,就用[home]段。否则请求的共享名就当作 是个打印机共享名,然后去寻找适合的 printcap 文件,看看请求的共享名是不是有效的打印共 享名,如果是就克隆出一个新的打印机共享提供给客户。 comment = All Printers path = /var/spool/samba browseable = no public = yes guest ok = no writable = no printable = yes. //共享打印机的文字描述。 //假脱机目录所在的位置。 //不允许浏览与打印服务相关的假脱机目录。 //所有用户可以访问共享资源。 //连接共享资源时不需要输入密码。 //不允许写入与打印服务相关的假脱机目录。 //实现打印共享。. 注意:实现打印共享的配置段中,必须是“printable = yes”,如果指定为其他,则服务器 将拒绝加载配置文件。通常,公共打印机的打印队列路径应该是任何人都有写入的权限。 另外,public=yes or no 都不是针对限定用户的,而是针对未限定的用户。设置成 yes 就是 所有的用户都能够访问,no 就是仅限于限定的用户能够访问。 (5)[tmp] comment = Temporary file space path = /tmp read only = no public = yes. //共享资源的文字描述。 //共享资源的本机路径。 //不只是允许读取。 //所有用户都可以访问共享资源。. (6)[public] comment = Public Stuff path = /home/samba public = yes writable = yes printable = no write list = @staff. //共享资源的文字描述。 //共享资源的本机路径。 //所有用户都可以访问共享资源。 //目录允许写入。 //不允许打印共享。 //拥有写入权限的用户或群组(以@开头表示)。. 另外,要让 Samba 服务器使用主机名能够正确的访问到相关的其他主机,如提供客户端 身份验证的另一台服务器,还必须修改/etc/samba/lmhost 文件。该配置文件的唯一功能是提供 主机名与 IP 地址的对应关系,应该将网络中所有和 Samba 服务器有关的主机名与 IP 地址的对 应关系都记录到里面,每条记录占用一行。默认情况下,该文件的内容只有一条记录“127.0.0.1 localhost”。 8.1.5. Samba 服务器的安全等级. smb.conf 配置文件的“security”选项,可以设置 Samba 服务器的安全性等级,直接影响 客户端访问服务器的方式,是配置中最重要的项目之一。在 Samba 服务器中,共分为 4 种安 全等级,分别如下: 1.share 安全等级 当客户端连接到具有 Share 安全等级的 Samba 服务器时,不需要输入账号和密码等数据, 就可访问主机上的共享资源,这种方式是最方便的连接方式,但是却无法保障数据的安全性。. 195.

(11) Linux 操作系统应用与安全. 其实在此安全等级中,用户并非不需要任何的账号和密码就可登录,而是 smbd 会自动提 供一个有效的 UNIX 账号来代表客户端身份,这个原理就和 Web 服务器及 FTP 服务器上的“匿 名” (anonymous)访问相同。为了提供客户端有效的 UNIX 账号,smbd 会自动决定最适合客 户端的账号,并将这些可用的账号列成表,来满足不同用户的需求。 2.user 安全等级 在 Samba 2.2 中默认的安全等级是“user”,它表示用户在访问服务器的资源前,必须先用 有效的 Samba 账号和密码进行登录,如图 8-4 所示。在服务器尚未成功验证客户端的身份前, 可用的资源名称列表并不会发送到客户端上。在此模式中,通常使用加密的密码来提高验证数 据传送的安全性。. 图 8-4 Samba 服务器登录. 应该特别注意的是,Samba 服务器与 Linux 操作系统使用不同的密码文件,所以无法以 Linux 操作系统上的账号密码登录 Samba 服务器。因此应该自己建立原来在“smb passwd file” 选项中指定的/etc/samba/smbpasswd 文件。 建立 Samba 密码文件并不需要手动的输入数据,只要先以管理员的账号登录 Linux 系统, 然后利用名为“mksmbpasswd.sh”的 Script 程序来读取 Linux 操作系统使用的密码文件 (/ete/passwd),最后再转换成 Samba 密码文件即可。建立 Samba 密码文件的方法如下。 [root@rh9 root]# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd [root@rh9 root]# ls -l /etc/samba/smbpasswd -rw-r--r-1 root root 3978 7 月 30 00:11 /etc/samba/smbpasswd. 在 Samba 密码文件建立后,接下来的工作就是利用 smbpasswd 命令来设置 Samba 密码文 件中每个 Samba 用户对应的密码。因此,该命令可以将已经存在的 Linux 系统登录账号转变 为 Samba 用户账号,这里以用户 root 为例。 [root@rh9 root]# smbpasswd root New SMB password: Retype new SMB password: Password changed for user root. Password changed for user root.. //生成 root 的 Samba 服务器登录密码。. 如果是添加新的用户,这时必须首先确保要添加的用户名在/etc/passwd 文件中存在,否则 将有“Failed to find entry for user xxxx”的提示信息出现。因此,要先使用 useradd 命令添加该 账号为 Linux 系统登录账号,然后再用 smbpasswd 命令将其设置为 Samba 账号。smbpasswd 常用的命令格式是:“smbpasswd [选项] [用户名]”。其中,常用的选项及其含义如表 8.2 所 196.

(12) 第8章. 常用服务器配置与管理. 示。从表 8.2 可知,该命令还可以对 Samba 账号进行管理和维护。 表 8.2 smbpasswd 的主要选项及作用 选项. 作用. -a. 添加 Samba 用户账号. -x. 删除 Samba 用户账号. -d. 关闭、停用 Samba 用户账号. -e. 开放 Samba 用户账户. -h. 显示该命令的帮助. [root@rh9 root]# smbpasswd lihh //不存在的 Linux 系统登录账号 lihh。 New SMB password: Retype new SMB password: build_sam_account: smbpasswd database is corrupt! username lihh not in unix passwd database! //用户名 lihh 在密码文件/etc/passwd 中不存在。 Failed to find entry for user lihh. Failed to modify password entry for user lihh //设置 lihh 的 Samba 登录密码失败。 [root@rh9 root]# useradd lihh //创建 Linux 系统登录账号。 [root@rh9 root]# smbpasswd -a lihh New SMB password: Retype new SMB password: Added user lihh. [root@rh9 root]# smbpasswd -d lihh Disabled user lihh. [root@rh9 root]# smbpasswd -e lihh Enabled user lihh. [root@rh9 root]# smbpasswd -x lihh Deleted user lihh.. 3.server 安全等级 如果连接到 Server 安全等级,用户在访问服务器资源前,同样也需先用有效的账号和密码 进行登录,但是客户端身份的验证会由另一台服务器负责。因此,在设置 server 安全等级时, 必须同时指定“password server”选项。如果验证失败,服务器会自动将安全性等级降为“user” , 但如果使用加密密码,那 Samba 服务器将无法反向检查原有的 UNIX 密码文件,所以必须指定 另一个有效的 smbpasswd 文件来进行客户端的身份验证。因此,应该设置 smb.conf 文件中的以 下选项。 security = server password server = <NT-Server-Name> smb passwd file = /etc/samba/smbpasswd. //设置 Samba 服务器使用 server 安全等级。 //设置 Samba 服务器的 NetBIOS 计算机名。 //SMB 服务器使用的密码文件路径。. 4.domain 安全等级 如果目前的网络结构为网域(Domain)而不是工作组(Workgroup),这时可以使用 domain 安全等级,以将 Samba 服务器加入现有的网域中。也就是说,不担任账号与密码的验证工作, 而是由网络中的域控制器(Domain Controller , DC)统一处理。 要将 Samba 服务器加入现有的网域,可以使用以下的指令格式。 [root@rh9 root]#smbpasswd -j Samba 主机名. -r DC 197.

(13) Linux 操作系统应用与安全. 在运行以上的指令后,还需要修改 smb.conf 文件中[global]部分的以下配置选项。 workgroup = domain_name security = domain password server = DC. 8.1.6. //指定 Samba 服务器要加入的网域。 //设置 Samba 服务器使用的安全性等级为 domain。 //指定进行身份验证的网域控制器名。. Samba 服务器的配置. 下面以实例的方法,说明 Samba 服务器的配置方法。在某局域网中,当前 Linux 主机的 NetBIOS 名称为 rh9,主机所在的工作组为 Workgroup,现在想在该 Linux 主机上创建目录 /var/work,并使用 Samba 服务器进行共享,使得客户机上所有用户都可以通过 Samba 服务匿名 访问该目录,无需输入任何账号与口令,并且对该目录拥有可读可写的权限。配置过程如下。 1.创建目录共享目录 执行命令“rmdir -m 777 /var/work”,创建目录/mnt/work 并设置其权限对所有用户都 是可读、可写、可执行。 2.编辑配置文件 使用文本编辑程序(如 VI)修改配置文件/etc/samba/smb.conf,确保里面的相关设置设定 为如下内容,其他各项使用默认设定值即可。 [global] //设置全局配置。 workgroup = MYGROUP //设定工作组名称。 server string = Samba Server //对该主机的注释。 security = share //必须设定为 share 级,否则无法匿名登录。 netbios name = rh9 //设定在网络中的主机名 [work] //设置共享目录。 comment = A publicly accessible directory ! //共享目录的注释。 path = /var/work //共享资源的路径。 writable = yes //允许写入目录。 guest ok = yes //连接时不需要密码。 public = yes //所有未指定用户都可以访问。. 3.语法查错 使用 Samba 安装后包含的工具——testparm,来测试 smb.conf 配置文件内的语法是否正确。 如果设置时的语法都正确,那在运行 testparm 程序后,系统会出现以下画面。 [root@rh9 root]# testparm Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[printers]" Processing section "[work]" Loaded services file OK. Press enter to see a dump of your service definitions. 在出现以上信息后,如果想查看详细的 smb.conf 配置文件内容,可以按 Enter 键,系统就 会出现所有的选项设置。 测试的结果正常,也不保证 Samba 服务器就一定可以正常运行,因为这个程序仅针对语 法来进行测试。 4.重新启动 Samba 服务器 执行“service smb restart”命令重新启动 Samba 服务器进程,使得修改后的配置文件 生效。 198.

(14) 第8章. 常用服务器配置与管理. 5.访问 Samba 服务器 在 Windows 客户端上,双击“我的电脑”打开文件浏览器,然后在地址栏中输入“\\Samba 服务器名称或 IP”,按 Enter 键后在窗口中将看到 Samba 服务器上的共享资源,如图 8-5 所示。 双击共享目录 work 的图标,不用输入用户名和密码即可进入共享目录,进行权限许可范围内 的各种操作。 在 Linux 客户端上,双击用户主目录图标,打开文件浏览器,然后在地址栏中输入 “smb://Samba 服务器名称或 IP”,在窗口中将看到 Samba 服务器上的共享资源,如图 8-6 所 示。双击共享目录 work 的图标,不用输入用户名和密码即可进入共享目录,进行权限范围内 的相关操作。. 图 8-5. 8.1.7. 从 Windows 访问 Samba 服务器. 图 8-6 从 Linux 访问 Samba 服务器. 图形界面下配置 Samba 服务器. 对于初学者用户,也可以在图形界面下配置 Samba 服务器。图形界面的配置虽然简单、 直观,但对于某些高级选项,图形界面下的配置工具并不能够地很好实现。因此,要想对 Samba 服务进行精细化的管理,还是要采取直接编辑配置文件的方法来实现。 依次单击“主菜单”→“系统设置”→“服务器设置”→“Samba 服务器”菜单,或者直 接执行“redhat-config-Samba”命令,系统会自动弹出如图 8-7 所示的“Samba 服务器配置” 窗口。. 图 8-7 Samba 服务器配置主窗口. 1.配置基本和安全性选项 Samba 服务器的第一步是配置服务器的基本选项和安全选项。在图 8-7 所示界面中,选择“首. 199.

(15) Linux 操作系统应用与安全. 选项”→“服务器设置”选项,打开“服务器设置”窗口,选择“基本”选项卡,如图 8-8 所示。. 图 8-8. “基本”选项卡. 图 8-9. “安全性”选项卡. 在“基本”选项卡上,指定计算机所属的工作组及计算机的简短描述。它们分别与配置 文件 smb.conf 中的 workgroup 和 server string 选项相对应。 在“安全性”选项卡中,可以分别对验证模式、验证服务器、加密口令以及来宾账号进 行设置,如图 8-9 所示。它们分别与 smb.conf 中的 security、password server、encrypt passwords、 guest account 选项相对应。 2.管理 Samba 用户 Samba 服务器配置工具要求在添加 Samba 用户前,在充当 Samba 服务器的 Red Hat Linux 9 系统上必须存在一个活跃的用户账号。Samba 用户和这个 Linux 用户账号相关联。 要添加 Samba 用户,可以在图 8-7 中选择“首选项”→“Samba 用户” ,然后单击“添加 用户”按钮,弹出图 8-10 所示的“创建新 Samba 用户”窗口。 在“创建新 Samba 用户”窗口中,从本地系统上的现存用户列表中选择“UNIX 用户名” 用来将其转换为 Samba 用户,如果用户想从 Windows 机器上登录并且使用一个不同的名字, 就需要在“Windows 用户名”字段中指定 Windows 用户名。还需要为 Samba 用户配置一个 Samba 口令,并再输入一次来确认这个口令。即便选择了为 Samba 使用加密口令,仍建议为所有用 户设置的 Samba 口令不同于他们的 Linux 系统登录口令。. 图 8-10. 创建新 Samba 用户. 另外,“服务器设置”-“安全”选项卡上的“验证模式”必须被设置为“用户”,才能 使这里的设置在访问 Samba 服务器时有效。 要编辑某个现存 Samba 用户,可以从 Samba 用户列表中将其选中,然后单击“编辑用户”. 200.

(16) 第8章. 常用服务器配置与管理. 按钮。要删除某个现存的 Samba 用户,先选择这个用户,然后单击“删除用户”按钮。需要 注意的是删除 Samba 用户并不会删除与其相关的 Linux 用户。 3.添加共享目录 要添加共享,可在图 8-7 所示界面中单击“添加共享”按钮,打开“创建 Samba 共享” 窗口,在“基本”选项卡中配置以下选项,如图 8-11 所示。. 图 8-11. “基本”选项卡. 图 8-12. “访问”选项卡. ( 1 ) 目 录 。 通 过 Samba 服 务 器 共 享 的 目 录 。 这 个 目 录 必 须 存 在 , 这 里 配 置 为 “/home/lihh/share”。 (2)描述。是对共享资源的简短描述,可以设置也可以不设置。 (3)在“描述”下面是用户访问该共享的基本权限,设置用户能读/写共享目录中的文件 还是仅仅只能读取。 在“访问”选项卡上,设置仅允许指定的用户访问共享还是允许所有的用户访问。如果 选择“只允许指定用户的访问”,就从用户列表中选定用户,如图 8-12 所示。“基本”选项卡 和“访问”选项卡设置完毕后,单击“确定”按钮后,共享就被添加。成功添加共享目录后的 Samba 服务器配置主窗口如图 8-13 所示。选中窗口中某一个共享项,还可以将其删除或修改 其属性。修改后的设置,要重启 Samba 服务后才能生效。. 图 8-13. 添加共享后的 Samba 服务器配置窗口. 8.2 NFS 服务器 8.2.1. NFS 概述. Samba 服务器主要用来解决 Windows 与 Linux 之间的资源共享,那么 Linux 与 Linux 之间 201.

(17) Linux 操作系统应用与安全. 的资源共享又如何实现呢?实际上,也可以使用 Samba 服务器,不过这里将介绍另外一种更 为便捷的服务——NFS。 NFS(Network File System,网络文件系统)是由 Sun 公司(Sun Microsystem,Inc.)于 1984 年推出的一个 RPC(Remote Procedure Call,远程过程调用)服务系统,它使 Linux、UINX 系 统之间能够共享文件,类似 Windows 系统中的资源共享。 NFS 是基于客户端/服务器模式工作的。输出文件的计算机称为 NFS 服务器,而 NFS 客 户端是访问文件的计算机。NFS 服务器上的目录被远程用户访问的过程叫“导出(export) ”, 客户端访问服务器则被称为“导入(import)”。 客户端和服务器通过 RPC 通信,当客户端上的应用程序访问远程文件时,客户端内核向 远程 NFS 服务器发送一个请求,等待服务器响应,而 NFS 服务器一直处于等待状态,如果接 收到客户端请求,就处理请求并将结果返回客户端。 当用户想使用远程文件时要使用 mount 命令把远程文件系统挂载到本地文件系统下,挂 载后就像使用本地计算机上的文件一样。这样做可以使网络中的不同主机直接访问同一个文 件,而不必在每台主机上都维护一个副本。 NFS 服务器是由一组守护进程在后台运行的,用以完成服务器的功能。4 个服务器守护进 程如下。 (1)inetd。网络服务进程,启动 inetd.conf 配置文件所设置的网络服务,应答客户端的 网络服务请求。 (2)portmap。将 TCP/IP 通信协议端口数字转化为 RPC 程序数字,使客户端能够进行 RPC 调用。 (3)nfsd。NFS 服务守护进程,启动文件系统请求服务,响应客户端对文件系统的请求。 (4)mountd。负责响应远程客户端的安装请求。 8.2.2. NFS 服务器安装. 在 Red Hat Linux 9 安装时,可以选择安装 NFS 服务器,其内置的 NFS 服务器版本为 nft-utils-1.0.1-2.9,如果不知道是否已经安装了此版本的软件,可以使用以下的方法判断。 [root@rh9 root]# rpm -qa |grep nfs redhat-config-nfs-1.0.4-5 //Linux 图形界面下的 NFS 配置工具,选装。 nfs-utils-1.0.1-2.9. 如果看到上面的结果,则表示该软件已经安装。否则,可以找出第一张安装光盘, redhat-config-nfs-1.0.4-5.rpm 和 nfs-utils-1.0.1-2.9.rpm 软件包都在 RedHat/RPMS 目录的下面。 可以使用下面的命令进行安装。 [root@rh9 dhcp]# mount /mnt/cdrom [root@rh9 dhcp]# cd /mnt/cdrom/Red Hat/RPMS [root@rh9 root]# rpm -ivh nft-utils-1.0.1-2.9.i386.rpm [root@rh9 root]# rpm -ivh redhat-config-nfs-1.0.4-5.i386.rpm. 8.2.3. NFS 服务器的启动停止. NFS 服务器也可以像前面介绍的其他服务器一样,采用同样的几种方法进行启动、关闭, 或者设置自动启动等操作。下面仅以 service 和 chkconfig 命令来说明。 202.

(18) 第8章. 常用服务器配置与管理. 1.使用 service 命令 NFS 服务器需要 portmap 服务的配合,所以需要先启动 portmap 服务,再启动 nfs 服务。 [root@rh9 root]# service nfs status rpc.mountd 已停 nfsd 已停 rpc.rquotad 已停 [root@rh9 root]# service portmap start 启动 portmapper: [root@rh9 root]# service nfs start 启动 NFS 服务: Starting NFS quotas: 启动 NFS 守护进程: 启动 NFS mountd:. [. 确定. ]. [ 确定 ] [ 确定 ] [ 确定 ] [ 确定 ]. 2.使用 chkconfig 命令 若要系统每次启动时自动开启 nfs 服务,可以使用 chkconfig 命令,下面的例子表示在系 统进入第 3 和第 5 个级别时自动开启 portmap 和 vsftpd 服务。 [root@rh9 root # chkconfig --level 35 portmap on [root@rh9 root # chkconfig --level 35 nfs on [root@rh9 root # chkconfig --list portmap portmap 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭 [root@rh9 root # chkconfig --list nfs nfs 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭. 8.2.4. NFS 服务器的配置. NFS 只有一个配置文件/etc/exports,该文件在默认情况下只允许 root 用户更改,当 NFS 启动时会自动读取该文件中的配置,向网络中的其他 Linux 主机共享资源。默认该文件为空, 共享文件时,可以按照如下语法添加内容。 /etc/exports 文件中的每一行代表一个不同的共享资源,用户可以根据情况自行设定。其语 法格式为:[共享目录][客户机 1(选项 1,选项 2…)][客户机 2(选项 1,选项 2…)]。 (1)共享目录。是要导出的文件系统或目录名称,也就是要共享给客户机使用的目录, 该目录必须是绝对路径。 (2)客户机。同一共享目录可以针对不同的客户机设置不同的参数,客户机可以是 IP 地址也可以是 NetBIOS 主机名。需要注意的是,这些主机名必须是在/etc/hosts 文件中已经定 义过的。否则,NFS 系统可能会无法找到指定名称的主机。 (3)选项。用于设置 NFS 客户机使用导出目录的权限,这些选项分为性能选项和安全选 项,数量众多。限于篇幅,下面仅简单介绍几个常用的选项。 ① rw:读/写权限,只读权限的参数为 ro。 ② sync:数据同步写入内存和硬盘,也可以使用 async,此时数据会先暂存于内存中,而 不立即写入硬盘。 ③ root_squash:登录 NFS 主机使用共享目录的用户如果为 root,那么这个用户的权限将 被压缩为匿名用户,通常他的 UID 与 GID 都会变成 nobody 系统账号的身份。 ④ no_root_squash:NFS 服务器共享目录用户的属性,如果用户是 root 用户,那么对于. 203.

(19) Linux 操作系统应用与安全. 这个共享目录来说就具有 root 用户的权限。这个参数非常不安全,建议不要使用。 ⑤ all_squash:不论登录 NFS 的用户身份为何,该身份都会变成 nobody,也就是匿名 用户。 下面是一个共享出两个目录/home/work 和/tmp 的 NFS 服务器配置实例。这时,需要在 /etc/exports 文件中增加两行。 /tmp. rh9(rw,sync). *(ro,sync). 表示名称为 lihost 的主机对共享目录/tmp 有读写的权限,其他所有主机对共享目录/tmp 的权限是只读。 /home/work. 192.168.0.*(rw,sync,no_root_squash). 表示允许 IP 地址范围在“192.168.0.*”的所有计算机以读写的权限来访问/home/work 目录。 8.2.5. 维护共享目录列表. 当修改了/etc/exports 文件的内容后,要想让新的配置文件生效,可以重新启动 NFS 服 务。实际上,也可以在不重新启动 NFS 服务的情况下,直接使用 exportfs 命令使新的设置立 即生效。 exportfs 命令是用来维护 NFS 服务输出目录列表的,命令的基本格式是: “exportfs [选 项]”,该命令的选项及作用如表 8.3 所示。 表 8.3 命令 exportfs 的选项及含义 选项. 作用. -a. 输出在文件/etc/exports 中设置的所有共享目录. -r. 重新读取/etc/exports 文件中的设置,并使设置生效,而不需要重新启动 NFS 服务. -u. 停止输出某一目录. -v. 显示 exportfs 命令执行的过程 [root@rh9 root]# more /etc/exports /tmp rh9(rw,sync) *(ro,sync) [root@rh9 root]# vi /etc/exports /tmp rh9(rw,sync) *(ro,sync) /home/work 192.168.0.*(rw,sync,no_root_squash) //增加该行,保存、退出 vi。 [root@rh9 root]# exportfs //不带选项时,显示 NFS 服务器当前的输出目录。 /tmp rh9 /tmp <world> [root@rh9 root]# exportfs -rv exporting rh9:/tmp exporting 192.168.0.*:/home/work exporting *:/tmp reexporting rh9:/tmp to kernel [root@rh9 root]# exportfs /tmp rh9 /home/work 192.168.0.* /tmp <world>. 204.

(20) 第8章. 8.2.6. 常用服务器配置与管理. 图形界面下配置 NFS 服务器. 除直接编辑配置文件/etc/exports 外,也可以使用图形界面下的配置工具配置 NFS 服务器。 图形界面下的配置虽然简单、直观,但对于某些高级选项,图形界面并不能够实现。 依次单击“主菜单”→“系统设置”→“服务器设置”→“NFS 服务器”菜单,或者直 接在终端中执行“redhat-config-nfs”命令,系统会自动弹出如图 8-14 所示的“NFS 服务器配 置”窗口。. 图 8-14. NFS 服务器配置主窗口. 在“NFS 服务器配置”窗口中,单击“增加”按钮 ,将弹出“添加 NFS”共享窗口, 其中包含 3 个选项卡,即“基本”、 “常规选项”和“用户访问”。以下分别说明这些选项卡中 的选项。 1.“基本”选项卡 如图 8-15 所示,在“基本”选项卡中包含的是 NFS 共享目录最重要的选项。其中“目录” 用来指定共享目录的绝对路径;“主机”用来指定 NFS 服务器的主机名称或别名;“基本权限” 用来设置此共享目录的默认访问权限,可以使用的选项是“只读”或“读/写”。. 图 8-15. “基本”选项卡. 图 8-16. “常规选项”选项卡. 2.“常规选项”选项卡 在“常规”选项卡中,包含的是 NFS 共享目录较高级的设置,在一般情形下并不需要修 改此处的内容,如图 8-16 所示。以下是这些选项的说明。 (1)允许来自高于 1024 的端口的连接。在默认的情况下,NFS 只允许使用小于 1024 的 连接端口进行连接,如果要开放大于 1024 的连接端口连接,需选择此项。 (2)允许不安全的文件锁定。为了兼容较早版本的 NFS 服务器,因为它们并不支持文件. 205.

(21) Linux 操作系统应用与安全. 锁定的功能。 (3)禁用子树检查。通常在客户端请求共享目录中的文件时,NFS 服务器不仅会检查客 户端对此文件的访问权限,还会检查该共享目录所在的整个文件系统,属于中等的安全性设计。 在选择此选项后,NFS 服务器将会停用此类的检查。 (4)按要求同步写操作。这个选项与“sync”选项的功能相同,如果不使用此功能,在 运行“exportfs”命令时会出现警告信息。 (5)强制立即同步操作。立即将修改后的信息进行同步写入磁盘中。 3.“用户访问”选项卡 在“用户访问”选项卡中,包含的是客户端在访问 NFS 共享目录时的安全性设置,如图 8-17 所示。以下是这些选项的说明:. 图 8-17. “用户访问”选项卡. (1)把远程根用户当作本地根用户。与“no_root_squash”选项相同,但为了提高安全性, 并不建议使用此项设置。 (2)把所有客户用户当作匿名用户。与“all_squash”选项相同,为了提高安全性,建议 使用此项设置。 (3)为匿名用户指定本地用户 ID。除非使用“把所有客户用户当作匿名用户”选项,否 则无法选择此项目,同时必需在“用户 ID”字段中输入匿名用户所使用的本机用户 ID。 (4)为匿名用户指定本地组群 ID。除非使用“把所有客户用户当作匿名用户”选项,否 则无法选择此项目,同时必需在“组群 ID”字段中输入匿名用户所属的本机组群 ID。 将上述 3 个选项卡按照实际需要设置后,单击“确定”按钮,新添加的共享就会出现在 图 8-14 所示的 NFS 服务器配置主窗口中。如果要针对某一共享目录进行修改,首先选择此共 享目录名称,然后单击上方工具栏中的“属性”按钮,系统会出现上面所讲的“NFS 共享” 窗口,可以对相应的设置进行修改。修改后的设置将在 NFS 服务重启后生效。 8.2.7. NFS 客户机链接. 在 NFS 服务器设置完成后,客户端就可以依据本身所拥有的权限来访问服务器上的共享 资源,并且将远程共享目录安装到本机的文件系统中。下面将讨论有关客户端连接时的内容。 1.查看 NFS 服务器上的共享资源 客户端如果要查看 NFS 服务器上的共享资源,可以使用 NFS 软件包中的“showmount” 命令。实现该功能的命令格式是:“showmount -e [NFS 服务器]”。 206.

(22) 第8章. 常用服务器配置与管理. [root@rh9 root]# showmount -e 10.10.10.254 Export list for 10.10.10.254: /home/work 192.168.0.* /tmp (everyone) [root@rh9 root]# showmount -e 10.10.10.1 mount clntudp_create: RPC: Port mapper failure - RPC: Unable to receive. 如果指定的主机没有提供 NFS 服务,或 NFS 服务还没有启动,在执行该命令后将显示 “mount clntudp_create: RPC: Port mapper failure - RPC: Unable to receive”的提示结果。如果在 命令中没有指定 NFS 服务器,则默认 NFS 服务器是本机。 2.安装共享资源到客户机 在利用 showmount 命令得知远程 NFS 服务器上的共享资源后,接下来就是进行实际的安装 工作,在此使用“mount”命令,其格式是: “mount NFS 服务器:共享目录 本机安装目录” 。 如果已经不再需要访问共享目录,可以使用“umount”命令来卸载已经挂载到本地的远程目录。 以下的范例将把 NFS 服务器(rh9)上的共享目录(/home/work)挂载到客户机上的/mnt/nfs 目录。但是在挂载前,必须先确定客户端对共享目录有足够的访问权限,并且在本机上已经提 前建立了用于挂载的目录。 [root@rh9 root]# mkdir /mnt/nfs -v //创建远程共享目录的本地挂载点。 mkdir: 已创建目录 ‘/mnt/nfs’ [root@rh9 root]# ls /mnt/nfs [root@rh9 root]# mount 10.10.10.254:/tmp /mnt/nfs [root@rh9 root]# ls /mnt/nfs //查看 NFS 服务器共享出来的文件。 evolution orbit-root ssh-XXrmBbob [root@rh9 root]# umount /mnt/nfs //卸载挂载的远程共享目录。 [root@rh9 root]# ls /mnt/nfs [root@rh9 root]# mount 10.10.10.254:/home/work /mnt/nfs mount: 10.10.10.254:/home/work failed, reason given by server: 权限不够. 8.3 Apache 服务器 8.3.1. Apache 概述. Apache 是 Internet 上最流行的 Web 服务器软件,它安全、高效、稳定、适用于各种平台, 关键它还是免费的和开放源代码的。从 1995 年开始直到今天,经过不断的发展,Apache 小组 开发的 Apache httpd 服务器软件已经成为市场的领导者。在所有的 Web 服务器软件中,Apache 占有绝对优势,远远领先于 Microsoft 的 IIS 服务器软件。 许多世界知名的网站都是基于 Linux 操作系统的,如 Yahoo、Hotmail 等网站。在 Linux 系统上架设 Web 服务器所使用的最多、最广泛的软件就是 Apache。它功能强大,高度稳定, 与 Linux 配合得十分完美,是在 Linux 上构建 Web 站点时首选的方案。另外,也有 Windows 平台下的 Apache 软件。可以到官方网站 http://www.apache.org 免费下载 Apache 最新的版本。 8.3.2. Apache 服务器的安装. 在安装 Red Hat Linux 9 时,可以选择安装 Apache 服务器,而在 Red Hat Linux 9 中内置的. 207.

(23) Linux 操作系统应用与安全. Apache 服务器版本为 httpd-2.0.40-21,如果不知道是否已安装此版本的软件,可以使用下面的 方法来判断。 [root@rh9 root]# rpm -qa httpd-2.0.40-21.i386.rpm. httpd. 如果看到上面的结果,则表示该软件已经安装。否则,需要找出第二张安装光盘,保存在 RedHat/RPMS 目录的 httpd-2.0.40-21.i386.rpm。可以使用下面的命令进行安装。 [root@rh9 root]# mount /mnt/cdrom [root@rh9 root]# cd /mnt/cdrom/Red Hat/RPMS [root@rh9 root]# rpm -ivh httpd-2.0.40-21.i386.rpm. 另 外 , 为 了 使 用 图 形 化 的 Apache 服 务 器 管 理 工 具 , 建 议 用 户 也 安 装 redhat-config-httpd-1.0.1-18.i386.rpm 软件包。 8.3.3. Apache 服务器的基本配置. Apache 的配置文件是包含了若干指令的纯文本文件,其文件名为 httpd.conf,在 Apache 启动时,会自动读取配置文件中的内容,并根据配置指令影响 Apache 服务器的运行。配置文 件改变后,只有在下次启动或重新启动后才会生效。 配置文件中的内容分为注释行和服务器配置命令行。行首有“#”的即为注释行,注释不 能出现在指令的后边,除了注释行和空行外,服务器会认为其他的行都是配置命令行。配置文 件中的指令不区分大小写,但指令的参数通常是对大小写敏感的。对于较长的配置命令,行末 可使用反斜杠“\”换行,但反斜杠与下一行之间不能有任何其他字符(包括空白)。可以使用 apachectl 或者 httpd 的命令行参数-t 来检查配置文件中的错误,而无需启动 Apache 服务器。 [root@rh9 root]# httpd -t httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName Syntax OK [root@rh9 root]# apachectl -t httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName Syntax OK. 整个配置文件总体上划分为 3 部分(section),第 1 部分为全局环境设置;第 2 部分是服 务器的主要配置;第 3 部分用于设置和创建虚拟主机。下面介绍一些常用的配置命令。 1.常规配置指令 (1)ServerRoot。所谓 ServerRoot 是指整个 Apache 目录结构的最上层,在此目录下可包 含服务器的配置、错误和日志等文件。如果安装时使用 rpm 版本的方式,则默认目录是 /etc/httpd,一般不需要修改。注意,这里不能在目录路径的后面加上斜线(/)。 (2)ServerName。设置服务器用于辨识自己的主机名和端口号,该设置仅用于重定向和 虚拟主机的识别。命令用法为:“ServerName 完全合格的域名[:端口号]” 。 对于 Internet 的 Web 服务器,应保证该名称是 DNS 服务器中的有效记录。默认配置文件 中对此没有设置,应根据服务器的实际情况进行设置。比如当前 Web 服务器的域名为 www.cqcet.cn,则可设置为:ServerName www.cqcet.cn 或 ServerName www.cqcet.cn:80。 当没有指定 ServerName 时,服务器会尝试对 IP 地址进行反向查询来获得主机名。如果在 208.

(24) 第8章. 常用服务器配置与管理. 服务器名中没有指定端口号,服务器会使用接受请求的端口。为了加强可靠性和可预测性,应 使用 ServerName 显式地指定一个主机名和端口号。 (3)Listen。Listen 命令告诉服务器接受来自指定端口或者指定地址的某端口的请求。如 果 Listen 仅指定了端口,则服务器会监听本机的所有地址;如果指定了地址和端口,则服务器 只监听来自该地址和端口的请求。利用多个 Listen 指令,可以指定要监听的多个地址和端口, 比如在使用虚拟主机时,对不同的 IP、主机名和端口需要作出不同的响应,此时就必须明确 指出要监听的地址和端口。其命令用法为: “Listen [IP 地址]:端口号”。Web 服务器使用标准 的 80 号端口,若要对当前主机的 80 端口进行侦听,则配置命令为:Listen 80,假设当前服务 器绑定了 61.186.160.104 和 61.186.160.105 IP 地址, 现需要对其 80 端口和 8080 端口进行监听, 则配置命令如下。 Listen Listen Listen Listen. 61.186.160.104:80 61.186.160.104:8080 61.186.160.105:80 61.186.160.105:8080. (4)ServerAdmin。用于设置 Web 站点管理员的 E-mail 地址。当服务器产生错误时(如 指定的网页找不到),服务器返回给客户端的错误信息中将包含该邮件地址,以告诉用户该向 谁报告错误。其命令用法为:“ServerAdmin E-mail 地址”。 (5)DocumentRoot。用于设置 Web 服务器的站点根目录,其命令用法为: “DocumentRoot 目录路径名” ,默认设置为:DocumentRoot "/var/www/html",注意,目录路径名的最后不能 加“/”,否则将会发生错误。 (6)ErrorDocument。用于定义当遇到错误时,服务器将给客户端什么样的回应,通常是 显示预设置的一个错误页面。其命令用法为:“ErrorDocument 错误号 所要显示的网页”。在 默认的配置文件中,预定义了一些对不同错误的响应信息,但都注释掉了,只需去掉前面的“#” 号即可开启。 (7)DirectoryIndex。用于设置站点主页文件的搜索顺序,各文件间用空格分隔。例如, 要将主页文件的搜索顺序设置为 index.php、index.html、index.htm、default.htm,则配置命令 为:“DirectoryIndex index.php index.html index.htm default.htm”。 (8)User 和 Group。User 用于设置服务器以哪种用户身份来响应客户端的请求。Group 用于设置将由哪一组来响应用户的请求。User 和 Group 是 Apache 安全的保证,千万不要把 User 和 Group 设置为 root。 (9)AddDefaultCharset。用于指定默认的字符集。在 HTTP 的回应信息中,若在 HTTP 头中未包含任何关于内容字符集类型的参数时,此指令将指定的字符集添加到 HTTP 头中,此 时将覆盖网页文件中通过 META 标记符所指定的字符集。命令用法为:“AddDefaultCharset 字 符集名称”。 Apache 默认的字符集为 ISO-8859-1,对于含有中文字符的网页,若网页中没有指定字符 集,则在显示中文的时候会出现乱码,解决的办法就是将默认字符集设置为 GB2312,其配置 命令为:“AddDefaultCharset GB2312” 。 2.性能配置指令 一般情况下,每个 HTTP 请求和响应都使用一个单独的 TCP 连接,服务器每次接受一个. 209.

(25) Linux 操作系统应用与安全. 请求时,都会打开一个 TCP 连接并在请求结束后关闭该连接。若能对多个处理重复使用同一 个连接,则可减小打开 TCP 连接和关闭 TCP 连接的负担,从而提高服务器的性能。 (1)Timeout。用于设置连接请求超时的时间,单位为秒。默认设置值为 300,超过该时 间,连接将断开。若网速较慢,可适当调大该值。 (2)KeepAlive。用于启用持续的连接或者禁用持续的连接。其命令用法:“KeepAlive on|off”,配置文件中的默认设置为 KeepAlive on。 (3)MaxKeepAliveRequests。用于设置在一个持续连接期间允许的最大 HTTP 请求数目。 若设置为 0,则没有限制;默认设置为 100,可以适当加大该值,以提高服务器的性能。 (4)KeepAliveTimeout。用于设置在关闭 TCP 连接之前,等待后续请求的秒数。一旦接 受请求建立了 TCP 连接,就开始计时,若超出该设定值还没有接收到后续的请求,则该 TCP 连接将被断开。默认设置为 10 秒。 (5)控制 Apache 进程。对于使用 prefork 多道处理模块的 Apache 服务器,对进程的控 制,可在 prefork.c 模块中进行设置或修改。配置文件的默认设置如下。 <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 MaxClients 150 MaxRequestsPerChild 1000 </IfModule>. 在配置文件中,属于特定模块的指令要用<IfModule>指令包含起来,使之有条件地生效。 <IfModule prefork.c>表示如果 prefork.c 模块存在,则在<IfModule prefork.c>与</IfModule>之间 的配置指令将被执行,否则不会被执行。下面分别介绍各配置项的功能。 ① Startservers 用于设置服务器启动时启动的子进程的个数。 ② MinSPareservers 用于设置服务器中空闲子进程(即没有 HTTP 处理请求的子进程)数目的下限。若空闲 子进程数目小于该设置值,父进程就会以极快的速度生成子进程。 ③ MaxSPareservers 用于设置服务器中空闲子进程数目的上限。若空闲子进程超过该设置值,则父进程就会 停止多余的子进程。一般只有在站点非常繁忙的情况下,才有必要调大该设置值。 ④ Maxclient 用于设置服务器允许连接的最大客户数,默认值为 150,该值也限制了 httpd 子进程的最 大数目,可根据需要进行更改,比如更改为 500。 ⑤ MaxRequestsPerChild 用于设置子进程所能处理请求的数目上限。当到达上限后,该子进程就会停止。若设置 为 0,则不受限制,子进程将一直工作下去。 3.日志配置指令 日志对于 Web 站点必不可少,它记录着服务器处理的所有请求、运行状态和一些错误或 警告等信息。要了解服务器上发生了什么,就必须检查日志文件,虽然日志文件只记录已经发. 210.

(26) 第8章. 常用服务器配置与管理. 生的事件,但是它会让管理员知道服务器遭受的攻击,并有助于判断当前系统是否提供了足够 的安全保护等级。 (l)ErrorLog。用于指定服务器存放错误日志文件的位置和文件名,默认设置为: “ErrorLog logs/error_log” 。 此处的相对路径是相对于 ServerRoot 目录的路径。在 error_log 日志文件中, 记录了 Apache 守护进程 httpd 发出的诊断信息和服务器在处理请求时所产生的出错信息。在 Apache 服务器 出现故障时,可以查看该文件以了解出错的原因。 (2)LogLevel。用于设置记录在错误日志中信息的数量,其中可能出现的记录等级依照 重要性降序排列,分别是:debug、info、notice、warn、error、crit、alert 和 emerg。 当指定了某个特定级别后,所有级别高于它的信息也将被记录在日志文件中。配置文件 中的默认配置级别为 warn,可根据需要进行调整。级别设置过低,将会导致日志文件的急剧 增大。以下是/var/log/httpd/error_log 记录中的部分内容。 [root@rh9 root]# more /var/log/httpd/error_log [Mon Nov 09 14:11:01 2009] [notice] Digest: generating secret for digest authentication ... [Mon Nov 09 14:11:01 2009] [notice] Digest: done [Mon Nov 09 14:11:02 2009] [notice] Apache/2.0.40 (Red Hat Linux) configured -resuming normal operations [Mon Nov 09 14:11:21 2009] [warn] child process 6052 still did not exit, sending a SIGTERM [Mon Nov 09 14:11:21 2009] [warn] child process 6053 still did not exit, sending a SIGTERM [Mon Nov 09 14:11:21 2009] [notice] caught SIGTERM, shutting down --More--(25%). (3)LogFormat。此选项用来定义“CustomLog”指令中使用的格式名称,以下是系统默 认的格式,可以直接使用这些默认值。 [root@rh9 root]# grep LogFormat /etc/httpd/conf/httpd.conf LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent. (4)CustomLog。此选项可以用来设置记录文件的位置和格式,默认值是:“CustomLog logs/access_log combined” 。 (5)PidFile。用于指定存放 httpd 主(父)进程号的文件名,便于停止服务。其默认值是: “PidFile run/httpd.pid”。 4.容器与访问控制指令 (1)容器指令简介。容器指令通常用于封装一组指令,使其在容器条件成立时有效,或 者用于改变指令的作用域。容器指令通常成对出现,具有以下格式特点。 <容器指令名 参数> </容器指令名> 例如: <IfModule mod_ssl.c> Include conf/ssl.conf </IfModule>. <IfModule>容器用于判断指定的模块是否存在,若存在(被静态地编译进服务器,或是被 211.

(27) Linux 操作系统应用与安全. 动态地装载进服务器),包含于其中的指令将有效,否则会被忽略。此处的配置指令的含义是: 若 mod_ssl.c 模块存在,则用 Include 指令,将 conf/ssl.conf 配置文件包含进当前的配置文件中。 <IfModule>容器可以嵌套使用。若要使模块不存在时所包含的指令有效,只需在模块名前 加一个“!”即可。比如配置文件中的以下配置。 <IfModule ! mpm_winnt.c> <IfModule ! mpm_netware.c> User nobody </IfModule> </IfModule>. 除了<IfModule>容器外,Apache 还提供了<Directory>、<Files>、<Location>、<VirtualHost> 等容器指令。其中,<VirtualHost>用于定义虚拟主机;<Directory>、<Files>、<Location>等容 器指令主要用来封装一组指令,使指令的作用域限制在容器指定的目录、文件或某个以 URL 开始的地址。在容器中,通过使用访问控制指令可实现对这些目录、文件或 URL 地址的访问 控制。 (2)访问控制指令。访问控制指令由 Apache 的内建模块 mod_access 提供,它能实现基 于 Internet 主机名的访问控制,其主机名可以是域名,也可以是一个 IP 地址,建议尽量使用 IP 地址,以减少 DNS 域名解析。相关的指令主要有 Allow、Deny 和 Order。 ① Allow 命令 用法:Allow from hostlist。命令功能:指定允许访问的主机。hostlist 代表主机名列表,各 主机名之间用空格分隔。该指令常用于<Directory>、<Files>、<Location>等容器中,以设置允许 访问指定目录、文件或 URL 地址的主机。比如允许 61.186.160.104 主机访问,则实现命令为: Allow from 61.156.160.104。若要允许所有的主机访问,则实现命令可表达为:Allow from a11。 ② Deny 命令 用法:Deny from host list。命令功能:该命令与 Allow 刚好相反,用于指定禁止访问的主 机名。 ③ Order 命令 用于指定 Allow 和 Deny 语句,哪一个被先执行。其具体用法有以下三种:Order Allow,Deny;Order Deny, Allow;Order mutual-failure。 “Order Allow,Deny”:表示 Allow 语句在 Deny 之前执行,若主机没有被特别指出允许访 问,则该主机将被拒绝访问资源。 “Order Deny,Allow”:Deny 在 Allow 之前进行控制。若主机没有被特别指出拒绝访问, 则该资源将被允许访问。 “Order mutual-failure”:只有那些在 Allow 语句中被指定,同时又没有出现在 Deny 语句 中的主机,才允许访问。若主机在两条指令中都没有出现,则将被拒绝访问。 (3)对目录、文件和 URL 操作的容器。 ① <Directory>容器 <Directory>容器用于封装一组指令,使其对指定的目录及其子目录有效。该指令不能嵌套 使用,其命令用法如下。 <Directory ……. 212. 目录名>.

(28) 第8章. 常用服务器配置与管理. </Directory>. 容器中所指定的目录名可以采用文件系统的绝对路径,也可以是包含通配符的表达式。 比如要设置所有主机均能访问/var/www/html 目录,则容器指令的表达如下。 <Directory /var/www/html> Order allow,deny Allow from all </Directory>. 若要禁止所有主机通过 Apache 服务访问文件系统的根目录,则配置指令如下。 <Directory /> Order deny,allow Deny from all </Directory>. 目录名可使用“*”或“?”通配符,“*”代表任意个字符,但不能通配“/”符号。“?” 代表一个任意的字符。比如要对所有普通用户主目录下的 public_html 子目录进行配置,则此 时的容器指令表达如下。 <Directory /home/*/public_html> Order allow,deny Allow from all </Directory>. 如果有多个<Directory>容器配置段符合包含某文档的目录(或其父目录),那么指令将以 最短目录、最先应用的规则进行应用。另外还提供了一个名为<DirectoryMatch>的容器,其用 法与<Directory>相同,只是在指定目录名时,可直接使用正则表达式。<Directory>若要使用正 则表达式,则需要在正则表达式前加“~”符号。 ② <Files>容器 <Files>容器作用于指定的文件,而不管该文件实际存在于哪个目录。其命令用法如下。 <Files 文件名> …… <Files>. 文件名可以是一个具体的文件名,也可以使用“*”和“?”通配符。另外,还可使用正则 表达式来表达多个文件,此时要在正则表达式前多加一个“~”符号。 比如配置文件中的以下配置,将拒绝所有主机访问位于任何目录下的以.ht 开头的文件, 如.htaccess 和.htpasswd 等系统重要文件。 <Files ~ "\.ht"> Order allow,deny Deny from all <Files>. 该容器通常嵌套在<Directory>容器中使用,以限制其所作用的文件系统范围。比如: <Directory /var/www/html> <Files private.html> order allow,deny Deny from all </Files> </Directory> 213.

(29) Linux 操作系统应用与安全. 以上配置将拒绝对 html 目录及其所有子目录下的 private.html 文件进行访问。 <FilesMatch>容器与<Files>用法相同,只是可以直接使用正则表达式来通配多个文件。 ③ <Location>容器 <Location>容器是针对 URL 地址进行访问限制的,而不是 Linux 的文件系统。其命令用 法如下。 <Location URL> …… </Location>. 比如要拒绝除 61.186.160.105 以外的主机对 URL 以/assistant 开头的访问,则配置命令为: <Location /assistant> Order deny,allow Deny from all Allow from 61.186.160.105 </Location>. 在<Location>容器中,/assistant 代表 Web 站点根目录下的 assistant 目录。而在<Directory> 容器中,最左边的“/”代表的是 Linux 文件系统的根目录。通过以上设置后,除 61.186.160.105 主机外,对 Web 站点根目录下的 assistant 目录,以及对其下子目录中的页面访问,都将被禁止。 5.其他配置指令 (1).htaccess 文件。.htaccess 文件也称为分布式配置文件,在该文件中也可放置一些配置 指令,以作用于该文件所在的目录以及目录下的所有子目录。该文件可位于多个目录中,以分 别对这些目录进行控制。功能上类似于<Directory>容器,但<Directory>和<Location>容器不能用 在.htaccess 文件中,<Files>容器可以用于该文件。.htaccess 文件是在 httpd.conf 配置文件中,由 以下命令配置指定的。 AccessFileName .htaccess. 在配置文件指定分布式配置文件.htaccess 后,若站点的根目录为/var/www/html,当用户在 浏览器 中请 求 index.html 页面时, 服务器 会在 该文档 的各 个路径 中去 查找第 一个 存 在 的.htaccess 配置文件,即 Apache 会试图打开/.htaccess、/var/.htaccess、/var/www/.htaccess、 /var/www/html/.htacces。 对系统的配置均可在 httpd.conf 文件中实现,搜寻.htaccess 文件会降低系统性能,可通过 在<Directory />中使用 Allowoverride None 命令,来禁止系统查找该文件。 <Directory /> Allowoverride None </Directory>. Allowoverride 命令用于设置原来设定的权限是否可以被.htaccess 文件中的权限所覆盖,其 选项有 All 和 None 两个。若设置为 None,则不受.htaccess 的权限覆盖,此时系统就不再寻找 和读取.htaccess 文件中的配置内容。 (2)Options 命令。Options 命令控制在特定目录中将使用哪些服务器特性,通常用在 <Directory>容器中,其命令用法为“Options 功能选项列表”。可用的选项及功能如表 8.4 所示。 对于 Linux 系统的根目录和 Web 站点根目录的访问控制,通常可设置为以下形式。. 214.

參考文獻

相關文件

某项货物的单位价格是指该项货物的贸易货值与其货量之比。季度单位价格指数是计算当季各

某项货物的单位价格是指该项货物的贸易货值与其货量之比。季度单位价格指数是计算当季各

 基准制的选用原则是:优先选用基孔制 ;只有在下列条件 下才使用基轴制 :①直接使用有一定公差等级而不再进行机

某项货物的单位价格是指该项货物的贸易货值与其货量之比。季度单位价格指数是计算当季

一、 重积分计算的基本方法 二、重积分计算的基本技巧 三、重积分的应用.. 重积分的

一、 曲线积分的计算法

各块报告模板包括所谓的模板对象, 或对象, 每个被分配到某一 SpecManager 项目(光谱, 表格, 化学结构...) 或其它项目(文本标签)

• 全球已累积有 1600 万人次有效计算机案例, 5000 余家企 业、研究机构与政府组织持续追踪其有效性。. • 96% 的准确度、 34 个国家使用、