免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2937 | 回复: 0
打印 上一主题 下一主题

基于UNIX平台FTP服务器的建立 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-07 16:59 |只看该作者 |倒序浏览
基于UNIX平台FTP服务器的建立
目前很多企业单位正在构架自己的Intranet,FTP服务器是其中的一个服务支持,有很多单位购置了基于UNIX平台的计算机,为了在网上能够提供FTP服务支持,专门购置基于UNIX平台的FTP Server软件,其实在基于UNIX平台的计算机系统中,采取一定的技术方法,就可以建立自己的FTP Server,实现网上文件上下载服务,无须再购置专门的软件,和乐而不为之呢?下面就其建立过程阐述如下:
1.         确定FTP Server的共享目录
为FTP Server建立一个FTP工作目录,在此设定为/home/ftp
2.         编写FTP Server初始设置的Shell程序(setup)
用编辑工具(如vi)编写一个Shell程序,用于对系统进行设置。
#!/bin/sh
case $# in
0) ftphome="`grep '^ftp:' /etc/passwd | cut -d: -f6`"
;;
1) if [ "$1" = "start" ]; then
ftphome="`grep '^ftp:' /etc/passwd | cut -d: -f6`"
else
ftphome=$1
fi
;;
*) echo "Usage: $0 [anon-ftp-root]"
exit 1
;;
esac
if [ -z "${ftphome}" ]; then
echo "$0: ftphome must be non-null"
exit 2
fi
if [ "${ftphome}" = "/" -o "${ftphome}" = "/usr" ]; then
echo "$0: ftphome must not be / or /usr"
exit 2
fi
if [ ! -d ${ftphome} ]; then
mkdir ${ftphome}
fi
if [ ! -d ${ftphome}/usr/bin ]; then
mkdir -p ${ftphome}/usr/bin
fi
cp /usr/bin/ls ${ftphome}/usr/bin
chmod 111 ${ftphome}/usr/bin/ls
chown root ${ftphome}/usr/bin
chmod 555 ${ftphome}/usr/bin
if [ -r ${ftphome}/bin ]; then
mv -f ${ftphome}/bin ${ftphome}/Obin
fi
ln -s usr/bin ${ftphome}
if [ ! -d ${ftphome}/usr/lib ]; then
mkdir -p ${ftphome}/usr/lib
fi
if [ ! -d ${ftphome}/etc ]; then
mkdir -p ${ftphome}/etc
fi
cp /usr/lib/ld.so /usr/lib/ld.so.1 ${ftphome}/usr/lib
for lib in libc libdl libintl libw libnsl libsocket \
nss_nis nss_nisplus nss_dns nss_files
do
cp /usr/lib/${lib}.so.1 ${ftphome}/usr/lib
rm -f ${ftphome}/usr/lib/${lib}.so
ln -s ./${lib}.so.1 ${ftphome}/usr/lib/${lib}.so
done
cp /usr/lib/straddr.so.2 ${ftphome}/usr/lib
 
rm -f ${ftphome}/usr/lib/straddr.so
ln -s ./straddr.so.2 ${ftphome}/usr/lib/straddr.so
cp /etc/passwd /etc/group /etc/netconfig ${ftphome}/etc
chmod 555 ${ftphome}/usr/lib/*
chmod 444 ${ftphome}/etc/*
chown root ${ftphome}/usr/lib ${ftphome}/etc
chmod 555 ${ftphome}/usr/lib ${ftphome}/etc
if [ ! -d ${ftphome}/dev ]; then
mkdir -p ${ftphome}/dev
fi
prefix="/devices/pseudo/mm@0:"
for device in zero
do
line=`ls -l ${prefix}${device} | sed -e 's/,//'`
major=`echo $line | awk '{print $5}'`
minor=`echo $line | awk '{print $6}'`
rm -f ${ftphome}/dev/${device}
mknod ${ftphome}/dev/${device} c ${major} ${minor}
done
prefix="/devices/pseudo/clone@0:"
for device in tcp udp ticotsord
do
line=`ls -l ${prefix}${device} | sed -e 's/,//'`
major=`echo $line | awk '{print $5}'`
minor=`echo $line | awk '{print $6}'`
rm -f ${ftphome}/dev/${device}
mknod ${ftphome}/dev/${device} c ${major} ${minor}
done
chmod 666 ${ftphome}/dev/*
chown root ${ftphome}/dev
chmod 555 ${ftphome}/dev
#建立一个匿名FTP服务目录,并设立可读可写属性
if [ ! -d ${ftphome}/pub ]; then
mkdir -p ${ftphome}/pub
fi
chown ftp ${ftphome}/pub
chmod 777 ${ftphome}/pub

3.         编辑/etc/passwd和/etc/shadow文件
设置匿名FTP帐号,按下面方法分别对/etc/passwd和/etc/shadow两个文件中增加如下数据项:
(1)在/etc/passwd文件中增加
ftp:30000:30000:Anonymous FTP:/home/ftp:/nosuchshell
(2)在/etc/shadow文件中增加
ftp:NP:6445::::::

4.         运行setup程序
在运行setup程序之前,将该文件设置成执行文件
#chmod +x setup
运行setup程序 #setup /home/ftp
以上步骤就完成了FTP服务器的建立,即可使用FTP服务器,可以用如explorer、netscape navigator等浏览器对FTP服务器进行访问,进行下载和上载文件操作,使用非常方便。

在internet manager 中选择ftp的前两项,系统自动创建账户:ftp,组名为:group, 口令无,改shell为/bin/false(限制了telnet、su等操作),SCO Unix OpenServer 5中匿名FTP的缺省主目录是:/usr/internet/ip/0.0.0.0/sco_ftp,系统管理员须首先将ftp账户主目录,改位/ftp_server,操作如下:
#mv /usr/internet/ip/0.0.0.0/sco_ftp /ftp_server
#ln –s /ftp_server /usr/internet/ip/0.0.0.0/sco_ftp
创建上传用户ftpup,选择不创建主目录,选择/ftp_server为主目录。
下面为可选项:
#chown ftpup /ftp_server
#chgrp group /ftp_server
★ftp和ftpup必须同为group组
FTP(文件传输)和E-mail(电子邮件)、Telnet(远程登录)
一样,是Internet的三大主要功能之一。因为使用频繁,
用户往往会遇到各种各样的问题,合理利用FTP命令的初
始化文件.netrc,使运行FTP后自动执行某些FTP的内部命
令,可有效地克服各种使用中的不便,极大地方便FTP的使
用者。
·netrc中应包含的基本命令
  FTP中有几十个命令,在.netrc中应该设置的大致有如
下几条:
  1.default loginpassword
    在Internet中,存在大量的匿名ftp帐户,用户在不同
的主机间频繁登录anonymous帐户,输入自
    己的电子邮件地址作为口令,这种输入极其繁琐,完
全有必要利用.netrc文件,在进入ftp时自动
    完成该过程。
  2.binary
    许多用户在下载大量文件之后才意识到下载的文件
是二进制文件,而自己却是使用ascii方式传
    输,使下载文件无法使用,做了许多无用功。
在.netrc文件中提前将传输方式设置为binary,完全
    可避免出现上述情况。
  3.runique
    使用Internet的用户都知道,在浩如烟海的文件中,
有大量同名文件,如readme、index等,如果
    将同名文件下载到同一目录,则新传的文件会覆盖原
同名文件。为了使具有潜在重要性的文件不
    至于被意外覆盖,也需要在.netrc文件中,设置
runique参数防止上述错误。
  4.prompt off
    使用ftp时,经常会用到mget或其它需要确认的ftp命
令,将此确认过程取消,可大大方便使用者。
  5.hash on
    ftp中的hash命令,使得在进行文件传输时,每传输1
千字节,在屏幕上显示一个"#"号,用户通过观
    看屏幕上的"#"号,可以很直观地看到传输速度的快
慢,以及文件的传输完成情况,以决定进一步的
    操作。
  6.idle 7200
    目前国内的Internet专线速率普遍偏低,用户数却在
急剧膨胀,所以用ftp传输销大一些的文件
    时,经常会因为线路拥塞而断线,致使ftp进程中断,
为了减少因断线而反复登录的次数,需将idle
    命令的参数设置为最大(一般为7200秒)。
  7.macdef
    macdef定义一个宏,macro_name为宏定义的名称。在
macdef行下,可输入任何有效的ftp命令,并
    以空行结束宏定义,执行时只需在宏名前加"$"号即
可。如果宏名定义为init,则该宏命令在启动
    ftp后自动加以执行,无需用户输入$ macro_name。
·netrc的使用举例
  1.用vi编辑器先编辑一个如下的文件:
    default login anonymous password
user@my.site
    macdef init
    binary   .
    runique  .
    hash on  .
    prompt off
    idle 7200
    (空行)
    第1行意为缺省情况下,进入anonymous帐户,并以自
己的电子邮件地址为口令;第2行至第8行定义
    了宏init,该宏中的所有5条命令将在进入ftp环境后
立刻执行,第8行(空行)不可省略,否则为无
    效宏定义。
  2.利用.netrc可将用户所需操作大大简化,极大地提高
工作效率。如,利用archie命令查找到文件
    xplaygizmo-1.0.gz在匿名ftp主机上
unsite.unc.e-du的目
    /pub/packages/solaris/freeware下,用户欲将该文
件用ftp下载,只需用vi编辑器将archie的
    查找结果插入到.netrc文件空行之上,即增加下列三
行:
    cd/pub/packages/solaris/freeware
    get xplaygizmo-1.0.gz
    bye
    (空行)
    运行ftp sunsite.unc.edu,即自动完成上述.netrc
中的所有操作,无需任何人工干预。屏幕将
    显示类似于下面的结果:
    Connected to sunsite.unc.edu.
    220 calzone FTP server(Version wu-2.4(3Wed
0ct 2 09:30:40 EDT 1996)ready
    331 Guest login ok,send your complete e-mail
address as password.
    230.............
    230 Guest login ok,access resrictions apply.
    200 Type set to I.
    Receive unique on.
    Hash mark printing on (1024 bytes/hash mark).
    Interactive mode off.
    200 Maximum IDLE time set to 7200 seconds
    cd/pub/packages/solaris/freeware
    250 CWD command successful.
    get xplaygizmo-1.0.gz
    200 PORT command successful.
    150 Opening BINARY mode data connection for
xplaygizmo-1.0.gz(8753 bytes).
    ########
    226 Transfer complete.
    8753 bytes received in 50.8 secs(0.17
Kbytes/sec)
    221 Goodbye.
    缺省时,运行ftp命令将检测用户的HOME目录中
的.netrc文件,并自动加以执行,如果不想使用.netrc,
可在ftp命令行中使用-n参数加以取消。
#vi /etc/inetd.conf
在ftpd和telnetd两行前面加“#”
你可以在编辑时用“/”搜索

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/94369/showart_1892493.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP