UUCP系统是一组程序,完成文件传输,执行系统之间的命令,维护系统使用情况的统计,保护安全。UUCP是UNIX系统最广泛使用的网络实用系统,这其中有两个原因:第一、UUCP是各种UNIX版本都可用的唯一的标准网络系统,第二、UUCP是最便宜的网络系统。只需要一根电缆连接两个系统,然后就可建立UUCP。如果需要在相距数百或数千公里远的两个系统间传输数据,中需要两个具有拨号功能的调制解调器。
(1)UUCP命令
UUCP命令之一是uucp,该命令用于两系统间的文件传输,uucp命令格式类似于cp命令的格式,只是uucp允许用户有系统间拷贝文件,命令的一般格式如下:uucpsource_filedestination_file
source_file通常是本系统的文件(但不必一定是),destination_file通常是另一系统的文件或目录。指定destination_file的格式为:
system!filename或system!directory。
uucp给系统管理员提供了一个选项,可以限制传入和传出本系统的uucp文件只能传到/usr/spool/uucppublic目录结构中。若告诉uucp将传输的文件存放在其他目录中,系统将会送回一个邮件:remoteaccesstopath/filedenied。
uucp允许以简化符号~代替/usr/spool/uucppublic/。如:
uucpnamesremote!~/john/names
有时也可用uucp将文件从另一个系统拷贝到本系统,只要将要传入本系统的文件指定为源文件(用system!file)即可,如:
uucpremotes!/usr/john/file1file1
如果在远地机限制了文件传输的目录,上条命令不能拷贝到文件。拷贝文件到本系统的最安全的方法是:在两个系统上都通过uucppublic目录进行文件传输:
uucpremotes!~/john/file1~/pat/file1
uux命令
uux命令可用于在另一个系统上执行命令,这一特点称为"远程命令仞行"。
uux最通常的用处是在系统之间发送邮件(mail在其内部执行uux)。典型的uux请求如下:prlisting|uux-"remote1!lp-dpr1"
这条命令将文件listing格式编排后,再连接到系统remote1的打印机pr1上打印出来。uux的选项"-"使uux将本命令的标准输入设备建立为远程命令的标准输入设备。当若干个系统中只有一个系统连接了打印机时,常用uux打印文件。
当然必须严格地限制远程命令招待,以保护系统安全。如:本系统不应允许其它系统上的用户运行下面的命令:
uux"yoursys!uucpyoursys!/etc/passwd(outside!~/passwd)"
这条命令将使本系统传送/etc/passwd文件到系统outside上,一般地,只有几条命令允许地执行。rmail是加限制的mail程序,常常为允许通过uux执行的命令之一。也允许rnews(加限制的netnews伪脱机命令)在运行netnews的系统上执行,还允许lp在提供了打印设备的系统上运行。
uucico程序
uucp和uux命令实际上并不调用另一个系统及传送文件和执行命令,而是将用户的请求排入队列,并启动uucico程序。uucico完成实际的通讯工作。它调用其它的系统,登录,传送数据(可以是文件或请求远程命令执行)。如果电话线忙,或其它系统已关机,传输请求仍保留在队列中,uucico后续的职能操作(通常是cron完成)将发送这些传输请求。
uucico完成数据的发送和接收。在本系统的/etc/passwd文件中,有其它系统的uucico登录进入本系统的入口项,该入口项中指定的缺省shell是uucico。此外,其它系统调用本系统时,直接与uucico对话。
uuxqt程序
当另一系统的uucico调用本系统请求远程命令执行时,本系统的uucico将该请求排入队列,并在退出之前,启动uuxqt程序执行远程命令请求。
下面举例说明数据是如何传输的。假设本系统的一个用户发送邮件给另一远程系统remote1的某人,mail会执行uux,在remote1系统上远程地运行remail程序,要传送的邮件为remail命令的输入。uux将传输请求排入队列,然后启动uucico招待实际的远程调用和数据传输。如果remote1响应请求,uucico登录到remote1,然后传送两个文件:邮件和将在remote1上由uuxqt执行的uux命令文件。uux命令文件中含有运行remail请求。如果remote1在被调时已关机,uucico则将无法登录和传送文件,但是cron会周期地(1小时)启动uucico。uucico查找是否有还未传送出的数据,若发现uux指定的传输目标系统是remote1,就尝试再调用remote1,直到调通remote1为止,或者过了一定天数仍未调通remote1,未送出的邮件将作为"不可投递"的邮件退回给发送该邮件的用户。