16.3. 控制 UUCP 功能的访问

UUCP 是一个相当灵活的系统。这种灵活性也带来了一个需求,即仔细控制对其功能的访问,以防止滥用,无论是故意的还是意外的。UUCP 管理员主要关注的功能是远程命令执行、文件传输和转发。Taylor UUCP 提供了一种限制远程 UUCP 主机在使用这些功能时的自由度的方法。通过仔细选择权限,UUCP 管理员可以确保主机的安全性得到维护。

16.3.1. 命令执行

UUCP 的任务是从一个系统复制文件到另一个系统,并请求在远程主机上执行某些命令。当然,作为管理员,您会希望控制您授予其他系统的权限——允许它们在您的系统上执行它们选择的任何命令绝对不是一个好主意。

默认情况下,Taylor UUCP 仅允许其他系统在您的机器上执行 rmailrnews 命令,这些命令通常用于通过 UUCP 交换电子邮件和 Usenet 新闻。要更改特定系统的命令集,您可以使用 commands 关键字在sys文件中。同样,您可能希望将搜索路径限制为仅包含允许命令的目录。您可以使用 command-path 语句更改远程主机允许的搜索路径。例如,您可能希望允许系统 pablo 除了 rmailrnews 之外,还执行 bsmtp 命令:[1]
system          pablo
...
commands        rmail rnews bsmtp

16.3.2. 文件传输

Taylor UUCP 还允许您非常精细地调整文件传输。在一种极端情况下,您可以禁用与特定系统的传输。只需将 request 设置为 no,远程系统将无法从您的系统检索文件或向其发送任何文件。同样,您可以通过将 transfer 设置为 no 来禁止您的用户与系统之间传输文件。默认情况下,本地系统和远程系统上的用户都可以上传和下载文件。

此外,您可以配置文件可以复制到和复制自的目录。通常,您会希望将来自远程系统的访问限制为单个目录层次结构,但仍然允许您的用户从他们的主目录发送文件。通常,远程用户只允许从公共 UUCP 目录接收文件/var/spool/uucppublic。这是使文件公开可用的传统位置,非常类似于 Internet 上的 FTP 服务器。[2]

Taylor UUCP 提供了四个不同的命令来配置发送和接收文件的目录。它们是:local-send,它指定用户可以请求 UUCP 从中发送文件的目录列表;local-receive,它给出了用户可以请求接收文件的目录列表;以及 remote-sendremote-receive,它们对来自外部系统的请求执行类似的操作。考虑以下示例
system          pablo
...
local-send      /home ~
local-receive   /home ~/receive
remote-send     ~ !~/incoming !~/receive
remote-receive  ~/incoming

local-send 命令允许您主机上的用户发送以下目录下的任何文件/home以及来自公共 UUCP 目录的文件到 pablolocal-receive 命令允许他们接收文件到世界可写的receive目录,在uucppublic中,或任何世界可写的目录,在/home下。remote-send 指令允许 pablo 请求来自/var/spool/uucppublic的文件,除了来自incomingreceive目录的文件。这通过在目录名称前加上感叹号来向 uucico 发出信号。最后,最后一行允许 pablo 将文件上传到 incoming

使用 UUCP 进行文件传输的一个主要问题是,它仅接收文件到世界可写的目录。这可能会诱使某些用户为其他用户设置陷阱。但是,除了完全禁用 UUCP 文件传输之外,没有办法摆脱这个问题。

16.3.3. 转发

UUCP 提供了一种机制,让其他系统代表您执行文件传输。例如,假设您的系统具有对名为 seci 的系统的 uucp 访问权限,但没有对另一个名为 uchile 的系统的访问权限。这允许您让 seci 为您从 uchile 检索文件并将其发送到您的系统。以下命令可以实现此目的
$ uucp -r seci!uchile!~/find-ls.gz ~/uchile.files.gz

通过多个系统传递作业的这种技术称为 转发。在您自己的 UUCP 系统上,您会希望将转发服务限制为少数您信任的主机,这些主机不会通过让您为他们下载最新的 X11R6 源代码发布版来产生惊人的电话费。

默认情况下,Taylor UUCP 完全禁止转发。要为特定系统启用转发,您可以使用 forward 命令。此命令指定系统可以请求您将作业转发到和转发自的站点列表。例如,seci 的 UUCP 管理员必须将以下行添加到sys文件,以允许 pablouchile 请求文件
####################
# pablo
system          pablo
...
forward         uchile
####################
# uchile
system          uchile
...
forward-to      pablo

uchileforward-to 条目是必要的,以便它返回的任何文件实际上都传递给 pablo。否则,UUCP 会丢弃它们。此条目使用了 forward 命令的变体,该变体允许 uchile 仅通过 secipablo 发送文件,而不是反过来。

要允许转发到任何系统,请使用特殊关键字 ANY(需要大写字母)。

注释

[1]

bsmtp 用于通过批处理 SMTP 传递邮件。

[2]

您可以使用波浪号(~)字符来引用 UUCP 公共目录,但仅在 UUCP 配置文件中;在外部,它通常转换为用户的主目录。