10.3. Internet/Intranet 应用程序

Linux 系统是提供网络服务的绝佳平台。在本节中,我们将尝试概述最常见的网络服务器和应用程序。

10.3.1. 服务器类型

10.3.1.1. 独立服务器

向用户提供服务可以通过两种方式进行。守护进程或服务可以以独立模式运行,也可以依赖于另一个服务来激活。

重度或持续使用的网络服务通常以独立模式运行:它们是始终运行的独立程序守护进程。它们很可能在系统启动时启动,并在为它们设置监听的特定连接点或端口上等待请求。当请求到来时,它将被处理,并且监听将继续,直到下一个请求。Web 服务器是一个典型的例子:您希望它每天 24 小时可用,如果它太忙,它应该创建更多监听实例来为同时用户提供服务。其他示例是大型软件档案,例如 Sourceforge您的 Tucows 镜像,它们每天必须处理数千个 FTP 请求。

在您的家用计算机上,独立网络服务的示例可能是 named(名称守护进程),即缓存名称服务器。独立服务有自己的进程在运行,您可以随时使用 ps 查看

bob:~> ps auxw | grep named
named   908  0.0  1.0 14876 5108 ?   S  Mar14  0:07 named -u named

但是,即使没有为这些服务运行服务器进程,您也可以在 PC 上使用某些服务。示例可以是 FTP 服务、安全复制服务或 finger 服务。这些服务由 Internet 守护进程 (inetd) 代替它们进行监听。

10.3.1.2. (x)inetd

在您的家用 PC 上,情况通常会平静一些。例如,您可能有一个小型网络,并且您可能需要不时地使用 FTP 或 Samba(用于与 MS Windows 机器连接)将文件从一台 PC 传输到另一台 PC。在这些情况下,启动您只需要偶尔使用的所有服务并让它们一直运行将是一种资源浪费。因此,在较小的设置中,您会发现必要的守护进程依赖于一个中央程序,该程序监听它负责的所有服务的端口。

这个超级服务器,即 Internet 服务守护进程,在系统初始化时启动。有两种常见的实现:inetdxinetd(扩展的 Internet 服务守护进程)。通常,每个 Linux 系统上都会运行其中一个

bob:~> ps -ef | grep inet
root  926   1 0 Mar14 ?   00:00:00 xinetd-ipv6 -stayalive -reuse \
-pidfile /var/run/xinetd.pid

Internet 守护进程负责的服务列在其配置文件中,/etc/inetd.conf,对于 inetd,以及在目录/etc/xinetd.d对于 xinetd。常用管理的服务包括文件共享和打印服务、SSH、FTP、telnet、Samba 配置守护进程、talk 和 time 服务。

一旦收到连接请求,中央服务器将启动所需服务器的实例。因此,在下面的示例中,当用户bob启动到本地主机的 FTP 会话时,FTP 守护进程将在会话处于活动状态时运行

bob:~> ps auxw | grep ftp
bob     793  0.1  0.2  3960 1076 pts/6    S    16:44   0:00 ncftp localhost
ftp     794  0.7  0.5  5588 2608 ?        SN   16:44   0:00 ftpd: 
localhost.localdomain: anonymous/bob@his.server.com: IDLE

当然,当您打开与远程主机的连接时,也会发生同样的情况:守护进程直接响应,或者远程 (x)inetd 启动您需要的服务并在您退出时停止它。

10.3.2. 邮件

10.3.2.1. 服务器

Sendmail 是 UNIX 平台的标准邮件服务器程序或邮件传输代理。它功能强大、可扩展,并且在适当的硬件配置下,可以处理数千名用户而不会出现问题。有关如何配置 Sendmail 的更多信息包含在 sendmailsendmail-cf 软件包中,您可能需要阅读READMEREADME.cf文件,位于/usr/share/doc/sendmailman sendmailman aliases 也很有用。

Qmail 是另一个邮件服务器,因其声称比 Sendmail 更安全而越来越受欢迎。虽然 Sendmail 是一个单体程序,但 Qmail 由可以更好地保护的较小的交互程序部分组成。Postfix 是另一个越来越受欢迎的邮件服务器。

这些服务器处理邮件列表、过滤、病毒扫描等等。免费和商业扫描器可用于 Linux。邮件列表软件的示例有 MailmanListservMajordomoEZmlm。有关 Linux 客户端和服务器支持的信息,请参阅您喜欢的病毒扫描器的网页。AmavisSpamassassin 是病毒扫描器和垃圾邮件扫描器的免费实现。

10.3.2.2. 远程邮件服务器

远程访问邮件最流行的协议是 POP3IMAP4。IMAP 和 POP 都允许离线操作、远程访问新邮件,并且它们都依赖于 SMTP 服务器来发送邮件。

虽然 POP 是一个简单的协议,易于实现并且几乎所有邮件客户端都支持,但 IMAP 更受青睐,因为

  • 它可以操作持久的消息状态标志。

  • 它可以存储和获取邮件消息。

  • 它可以访问和管理多个邮箱。

  • 它支持并发更新和共享邮箱。

  • 它也适用于访问 Usenet 消息和其他文档。

  • IMAP 在线和离线工作。

  • 它针对在线性能进行了优化,尤其是在低速链接上。

10.3.2.3. 邮件用户代理

有大量的文本和图形电子邮件客户端,我们只列举一些常见的。选择您最喜欢的。

UNIX mail 命令已经存在多年,甚至在网络出现之前就存在了。它是一个简单的界面,用于向其他用户发送消息和小文件,然后其他用户可以保存消息、重定向消息、回复消息等等。

虽然它不再常用作客户端,但 mail 程序仍然有用,例如将命令的输出邮寄给某人

mail < cv.txt

elm 邮件阅读器是对 mail 的急需改进,pine(Pine Is Not ELM)也是如此。mutt 邮件阅读器是更新的,并提供诸如线程之类的功能。

对于那些喜欢图形界面来处理邮件(以及网球肘或鼠标臂)的用户,有数百种选择。新用户最受欢迎的是 Mozilla Mail/Thunderbird,它具有简单的反垃圾邮件配置选项,以及 Evolution,MS Outlook 克隆。Kmail 在 KDE 用户中很受欢迎。

图 10-1。Evolution 邮件和新闻阅读器

还有数十种可用的 Web 邮件应用程序,例如 SquirrelmailYahoo! 邮件、Google 的 gmailHotmail

可以通过 Linux 邮件用户 HOWTO 获得概述。

大多数 Linux 发行版都包含 fetchmail,这是一个邮件检索和转发实用程序。它从远程邮件服务器(POP、IMAP 和其他一些服务器)获取邮件,并将其转发到您的本地投递系统。然后,您可以使用普通的邮件客户端处理检索到的邮件。它可以以守护进程模式运行,以指定的间隔重复轮询一个或多个系统。信息和使用示例可以在 Info 页面中找到;目录/usr/share/doc/fetchmail[-<version>]包含完整的功能列表和初学者常见问题解答。

procmail 过滤器可用于过滤传入邮件、创建邮件列表、预处理邮件、选择性转发邮件等。随附的 formail 程序(除其他外)可以生成自动回复和拆分邮箱。Procmail 在 UNIX 和 Linux 机器上已经存在多年,并且是一个非常强大的系统,旨在即使在最坏的情况下也能工作。更多信息可以在/usr/share/doc/procmail[-<version>]目录和手册页中找到。

Note关于电子邮件礼仪的注意事项
 

现在有些人似乎认为电子邮件消息不应该太正式。当然,这取决于情况。如果您是写信给您不认识的人,最好保持一定的距离,就像您在传统信件中那样。别忘了:您不认识的人可能是男性或女性...

10.3.3. Web

10.3.3.1. Apache Web 服务器

Apache 是迄今为止最流行的 Web 服务器,在超过一半的 Internet Web 服务器上使用。大多数 Linux 发行版都包含 ApacheApache 的优点包括其模块化设计、SSL 支持、稳定性和速度。在适当的硬件和配置下,它可以支持最高的负载。

在 Linux 系统上,服务器配置通常在/etc/httpd目录中完成。最重要的配置文件是httpd.conf;它是不言自明的。如果您需要帮助,可以在 httpd 手册页或 Apache 网站上找到它。

10.3.3.2. Web 浏览器

Linux 平台存在许多 Web 浏览器,包括免费的和商业的。Netscape Navigator 作为唯一像样的选择早已成为过去,因为 Mozilla/Firefox 提供了一个有竞争力的替代方案,它可以在许多其他操作系统上运行,例如 MS Windows 和 MacOS X。

Amaya 是 W3C 浏览器。Opera 是一款商业浏览器,紧凑而快速。许多桌面管理器在其文件管理器中提供 Web 浏览功能,例如 nautilus

流行的基于文本的浏览器包括 lynxlinks。您可能需要在 shell 中定义代理服务器,方法是设置适当的变量。当没有图形环境可用时,例如在脚本中使用时,文本浏览器快速且方便。

10.3.3.3. 代理服务器

10.3.3.3.1. 什么是代理服务器?

公司和组织通常希望其用户使用代理服务器。尤其是在用户众多的环境中,代理服务器可以更快地下载网页。代理服务器存储网页。当用户请求先前已请求过的网页时,代理服务器将直接将该网页提供给用户,这样用户就不需要从 Internet 获取它,这将花费更长的时间。当然,可以采取措施,使代理服务器进行快速检查并始终提供页面的最新版本。在某些环境中,强制使用代理服务器,在其他环境中,您可以选择是否使用它。

10.3.3.3.2. 代理配置

如果您有代理服务器名称和端口,则将该信息馈送到浏览器中应该很明显。但是,许多(命令行)应用程序依赖于变量http_proxyftp_proxy以实现正确的功能。为了您的方便,您可能希望在您的~/.bashrc:

中添加类似以下的一行http_proxy=export

http://username:password@proxy_server_name:port_number

中添加类似以下的一行http_proxy=例如

http://willy:Appelsi3ntj3@proxy:80

如果您不需要提供用户名和密码,只需省略 "@" 符号之前的所有内容,包括此符号。

10.3.4. 文件传输协议

10.3.4.1. FTP 服务器

在 Linux 系统上,FTP 服务器通常从 xinetd 运行,使用 WU-ftpd 服务器,尽管 FTP 服务器可以在 FTP 流量大的系统上配置为独立服务器。请参阅练习。

其他 FTP 服务器包括 vsftpdNcftpdProftpd 等。

大多数 Linux 发行版都包含 anonftp 软件包,该软件包设置匿名 FTP 服务器树和随附的配置文件。

10.3.4.2. FTP 客户端

thomas:~> ncftp blob
NcFTP 3.0.3 (April 15, 2001) by Mike Gleason (ncftp@ncftp.com).
Connecting to blob...
blob.some.net FTP server (Version wu-2.6.1-20) ready.
Logging in...
Guest login ok, access restrictions apply.
Logged in to blob.
ncftp / > help
Commands may be abbreviated.  'help showall' shows hidden and 
unsupported commands.  
'help <command>' gives a brief description of <command>.

ascii      cat      help      lpage     open     quote    site     
bgget      cd       jobs      lpwd      page     rename   type     
bgput      chmod    lcd       lrename   pdir     rhelp    umask    
bgstart    close    lchmod    lrm       pls      rm       version  
binary     debug    lls       lrmdir    put      rmdir      
bookmark   dir      lmkdir    ls        pwd      set        
bookmarks  get      lookup    mkdir     quit     show       
ncftp / > 

大多数 Linux 发行版都包含 ncftp,它是常见 UNIX ftp 命令的改进版本,您可能也从 Windows 命令行中知道它。ncftp 程序提供了额外的功能,例如更好和更易理解的用户界面、文件名完成、附加和恢复功能、书签、会话管理等等

Warning在手册页中可以找到包含大量示例的优秀帮助。同样,有许多 GUI 应用程序可用。
 

FTP 是不安全的!

除非您知道自己在做什么,否则不要将文件传输协议用于非匿名登录。您的用户名和密码可能会被恶意网络用户捕获!请改用安全 FTP;sftp 程序随附 Secure SHell 套件,请参阅 第 10.4.4.4 节

10.3.5. 聊天和会议

Gizmo:适用于您计算机的免费(但不是开源的)电话,请参阅 http://www.gizmoproject.com

10.3.6. 新闻服务

运行 Usenet 服务器涉及大量专业知识和微调,因此请参阅 INN 主页 以获取更多信息。

comp.* 层次结构中有一些有趣的新闻组,可以使用各种文本和图形客户端访问。许多邮件客户端也支持新闻组浏览,请检查您的程序或查看您当地的开源软件镜像,以获取文本客户端,例如 tinslrnnmutt,或下载 Mozilla 或许多其他图形客户端之一。

Deja.com 保留了 Google 支持的所有新闻组的可搜索存档。这是一个非常强大的获取帮助的工具:很有可能有人遇到过您的问题,找到了解决方案并将其发布在其中一个新闻组中。

10.3.7. 域名系统

所有这些应用程序都需要 DNS 服务来将 IP 地址与主机名匹配,反之亦然。DNS 服务器不知道世界上所有的 IP 地址,但它知道可以查询以查找未知地址的其他 DNS 服务器的网络。大多数 UNIX 系统可以运行 named,它是 Internet 软件联盟分发的 BIND (Berkeley Internet Name Domain) 软件包的一部分。它可以作为独立的缓存名称服务器运行,这在 Linux 系统上经常这样做,以加快网络访问速度。您的主要客户端配置文件是/etc/resolv.conf

search somewhere.org
nameserver 192.168.42.1
nameserver 193.74.208.137

,它确定了联系域名服务器的顺序有关更多信息,请参见关于 named 的 Info 页面,在/usr/share/doc/bind[-<version>]

文件和 Bind 项目 主页上。DNS HOWTO 介绍了 BIND 作为 DNS 服务器的用法。

10.3.8. DHCP

DHCP 是 动态主机配置协议,它正在大型环境中逐步取代旧的 bootp。它用于控制重要的网络参数,例如主机的 IP 地址和名称服务器。DHCP 向后兼容 bootp。要配置服务器,您将需要阅读 HOWTO。

DHCP 客户端计算机通常将使用配置 dhcpcd(DHCP 客户端守护进程)的 GUI 进行配置。如果您需要将计算机配置为 DHCP 客户端,请检查您的系统文档。

10.3.9. 身份验证服务

10.3.9.1. 传统传统上,用户在本地进行身份验证,使用存储在/etc/passwd/etc/shadow

在每个系统上的信息。但是,即使在使用网络服务进行身份验证时,本地文件也始终存在,以配置系统帐户以供管理使用,例如 root 帐户、守护进程帐户以及通常用于其他程序和目的的帐户。

bob:~> ls -l /etc/passwd /etc/shadow
-rw-r--r--    1 root     root         1803 Mar 10 13:08 /etc/passwd
-r--------    1 root     root         1116 Mar 10 13:08 /etc/shadow

这些文件通常是黑客首先检查的对象,因此请确保权限和所有权严格按照应有的方式设置

10.3.9.2. PAM

  • Linux 可以使用 PAM,即 可插拔身份验证模块,这是一种灵活的 UNIX 身份验证方法。PAM 的优点

  • 可用于各种应用程序的通用身份验证方案。

  • PAM 可以通过各种应用程序实现,而无需重新编译应用程序以专门支持 PAM。

  • 对管理员和应用程序开发人员的身份验证具有极大的灵活性和控制力。

应用程序开发人员无需开发其程序来使用特定的身份验证方案。相反,他们可以纯粹专注于其程序的细节。目录/etc/pam.d包含 PAM 配置文件(以前是/etc/pam.conf

  • )。文件中的每一行都有四个元素:

    • 模块auth

    • :提供实际的身份验证(可能要求并检查密码)并设置凭据,例如组成员身份或 Kerberos 票证。account

    • :检查以确保允许用户访问(帐户未过期,允许用户在一天中的此时登录,等等)。password

    • :用于设置密码。session

    :在用户通过身份验证后使用。此模块执行允许访问所需的其他任务(例如,挂载用户的家目录或使其邮箱可用)。

  • 模块堆叠的顺序(以便可以使用多个模块)非常重要。控制标志:告诉 PAM 在失败或成功时采取哪些操作。值可以是, required, requisitesufficient.

  • optional模块路径:要使用的可插拔模块的路径,通常在.

  • /lib/security

参数:模块的信息

PAM 会自动检测影子密码文件。

更多信息可以在 pam 手册页或 Linux-PAM 项目 主页上找到。

10.3.9.3. LDAP

轻型目录访问协议是一种客户端-服务器系统,用于通过网络访问全局或本地目录服务。在 Linux 上,使用 OpenLDAP 实现。它包括 slapd(独立服务器);slurpd(独立的 LDAP 复制服务器);实现 LDAP 协议的库以及一系列实用程序、工具和示例客户端。

使用 LDAP 的主要好处是整合组织内的某些类型的信息。例如,组织内所有不同的用户列表都可以合并到一个 LDAP 目录中。任何需要此信息的启用 LDAP 的应用程序都可以查询此目录。需要目录信息的用户也可以访问它。

其他 LDAP 或 X.500 Lite 的优势包括其易于实现(与 X.500 相比)及其定义明确的应用程序编程接口 (API),这意味着启用 LDAP 的应用程序和 LDAP 网关的数量在未来应该会增加。

从负面来看,如果您想使用 LDAP,您将需要启用 LDAP 的应用程序或使用 LDAP 网关的能力。虽然 LDAP 的使用应该只会增加,但目前可用于 Linux 的启用 LDAP 的应用程序并不多。此外,虽然 LDAP 确实支持一些访问控制,但它不具备 X.500 的许多安全功能。

由于 LDAP 是一种开放且可配置的协议,因此它可以用于存储几乎任何类型的与特定组织结构相关的信息。常见的示例包括邮件地址查找、与 PAM 结合的中央身份验证、电话目录和机器配置数据库。