linux下配置FTP服务器步骤.doc
.*一、创建匿名FTP服务器的方法1.增加新用户ftp,设置其主目录对任何用户都无写权限;2.新建立一个组anonymou,它只能被匿名ftp使用;3.在ftp用户的主目录下创建一个bin目录,它属于root用户,而且对任何用户都不能写;4.在ftp用户主目录下创建一个etc目录,它属于root用户,而且对任何用户都不能写;5.在ftp用户主目录下创建一个public目录,它属于ftp用户,而且对任何用户都能写。如果由 于安全等原因,您不允许其他用户在您的计算机上具有存储能力,那么您可以将其权限设置成555;6.将ls程序放到已创建的bin目录下,并将其修改成111方式,即对任何用户只能执行;7.在已创建的etc目录下,创建passwd和group两个文件,并将它们设置成444方式(只读)。二、创建匿名FTP-在Unix下用root登录,然后按下列步骤逐步建立FTP服务器。1.建立新组anonymou-#mkgroupanonymou2.建立新用户ftp,且ftp用户属于anonymou组-#mkuserpgrp=nonymouhome= /u/anonymouftp3.在用户目录下建立相关的目录#cd/u/anonymou#mkdiretc#mkdirbin#mkdirpublic4.将ls拷贝到/usr/anonymou/bin下,并设置其读写属性#cp/bin/ls./bin#chmod111./bin/ls5.创建/u/anonymou/etc/group文件-在该文件中增加一行:anonymou:!:201:6.创建/u/anonymou/etc/passwd文件-在该文件中增加一行:ftp:*:213:201:/u/anonymou:/bin/ksh7.修改/u/anonymou/etc/group文件和/u/anonymou/etc/passwd文件的属性#chmod444/u/anonymou/etc/passwd-#chmod444/u/anonymou/etc/group8.设置主目录下每个子目录的读写方式#chownftppublic#chmod555public#chmod555bin#chmod555etc#cd.#chmod555anonymou三、匿名FTP服务的应用实例-利用匿名服务,用户可以很方便地使用存放在public子目录下的公用信息,如:公用软件包、软件工具、各种信息管理系统软件等,这减少了企业因购买软件而需的重复投入。下面举例说明匿名FTP的使用。-在任何能启动FTP应用的前端机上,DOS或Windows下键入以下一系列命令,即可实现FTP的功能。C:ftp.exe(假设文件ftp.exe位于根目录下)ftp>openzxserver(服务器名为zxserver)ConnectedtoZXSERVER.220zxserverFTPserver(Version4.1SatNov2312:52:09CST1991)ready.User(ZXSERVER:(none)):ftp(输入用户名ftp)331Guestloginok,sendidentaspassword.Password:(直接回车)230Guestloginok,accessrestrictionsapply.ftp>binary(以二进制方式传输数据)200TypesettoI.ftp>cdpublic250CWDcommandsuccessfulftp>gethomeface(取文件homeface)200Portcommandsuccessful150Openingdataconnectionforhomeface226Transfercomplete 3300Bytesreceivedin0.05secondslinux下配置FTP服务器步骤 来源: 作者: 发布时间:2007-08-07 (阅读次数: 108) 查看更多关于: 配置linux FTP服务器 的文章 前言: 在众多的网络应用中,FTP(File Transfer porotocol)有着非常重要的地位。在Internet中一个十分重要的资源就是软件资源。而各种各样的软件资源大多数都是放在FTP服务器中的。可以说,FTP与WEB服务几乎占据了整个Internet应用的80%以上。 FTP服务可以根据服务对象的不同分为两类:一类是系统FTP服务器,它只允许系统上的合法用户使用;另一类是匿名FTP服务器,Anonymous FTP Server,它使用任何人都可以登录到FTP服务器上去获取文件。 so.bitsCN.com网管资料库任你搜一、选择和安装FTP服务器软件 如果你在安装LINUX系统的时候,在选择启动进程的时候选择了“ftpd”这一项的话,安装完LINUX系统后,它已经将一个默认的FTP服务器安装到系统中去了。我们已经可以利用它来实现系统FTP服务器的功能了。我们只需在此基础上根据我们的需要进行一些个性化设定就可以了。 在绝大多数的LINUX发行版本中都选用的是WashingtonUniversity FTP,它是一个著名的FTP服务器软件,一般简称为wu-ftp。它功能强大,能够很好地运行于众多的UNIX操作系统,例如:IBM AIX、FreeBSD、HP-UX、NeXTstep、Dynix、SunOS、Solaris等。所以Internet上的FTP服务器,一大半以上采用了它。wu-ftp拥有许多强大的功能,很适于吞吐量较大的FTP服务器的管理要求: bitsCN全力打造网管学习平台1) 可以在用户下载文件的同时对文件做自动的压缩或解压缩操作; 2) 可以对不同网络上的机器做不同的存取限制; 3) 可以记录文件上载和下载时间; 4) 可以显示传输时的相关信息,方便用户及时了解目前的传输动态; 5) 可以设置最大连接数,提高了效率,有效地控制了负载。 二、wu-ftp的组成 安装了wu-ftp后,你将在/bin目录下看到以下五个可执行文件: ftpd FTP服务器程序 ftpshut 用于关闭FTP服务器程序 ftpcount 显示目前在线人数 ftpwho 查看目前FTP服务器的连接情况 ckconfig 检查FTP服务器的设置是否正确 so.bitsCN.com网管资料库任你搜除了这些可执行文件以外,它还在/etc和/var目录下生成了七个配置文件: /etc/ftpusers /etc/ftpaccess /var/run/ftp.pids /etc/ftpconversions /var/log/xferlog /etc/ftpgroups /etc/ftphosts 系统安装了wu-ftp后,会建立一个特殊的用户ftp,并在/home目录下建立了一个ftpd目录,当用户以匿名登录上来时,将会自动定位于这个目录下。在这个目录下一般会建立几个子目录。 /home/ftpd/bin 存放一些供FTP用户使用的可执行文件 /home/ftpd/etc 存放一些供FTP用户使用的配置文件 /home/ftpd/pub 存放供下载的信息 /home/ftpd/incoming 存放供上载信息的空间 三、wu-ftp的配置 1. 查看、修改/etc/inetd.conf文件 /etc/inetd.conf文件是LINUX系统的超级服务器inetd的配置文件。它负责监听多个TCP/IP端口。当它收到请求,就根据配置文件派生一个相应的服务器。通过使用超级服务器,其他服务就可以只在需要时才派生,从而大大节省了系统资源。而wu-ftp就是利用超极服务器inetd来监听请求的。当超级服务器inetd收到了客户端的Tags: 配置linux FTP服务器FTP请求时,就根据配置文件打开一个FTP服务进程。所以我们如果要使用wu-ftp,就必须确认在超级服务器inetd的配置文件inetd.conf中有这样一句: feedom.net国内最早的网管网站 ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd 以便当超级服务器收到FTP请求的时候,能够派生一个wu-ftp的FTP服务进程。(注:要确认是否有这样一行时,可以使用文件内容查找命令来确认: cat /etc/inetd.conf | grep ftp 如果没有,则用手工加入或手工修改。 2. wu-ftpd的命令选项 wu-ftpd就是wu-ftp的服务进程。它可以不带参数执行,也可以带参数执行。下面简单介绍一下wu-ftpd的执行参数。 -d 当FTP服务器出错时,将错误入系统的syslog中; -l 将每次FTP客户端进行连接的入系统的syslog中; -t 设置FTP客户端连接几分钟无操作就切断连接; -a 使wu-ftp使用/etc/ftpaccess的设定; bbs.bitsCN.com国内最早的网管论坛 -A 使wu-ftp不使用/etc/ftpaccess的设定; -L 将FTP客户端连线后所执行的程序记录在系统的syslog中; -I 将FTP客户端上载文件的日志记录在/usr/adm.xferlog文件中; -o 将FTP客户端下载文件的日志记录在/usr/adm/xferlog文件中。 通过对以上参数的理解,我们建议,将上面系统安装时的那条默认配置改为: ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd a I 3.提供自动压缩、解压缩的功能 如果想让FTP服务器有自动压缩、解压缩的功能,必须先将一些压缩、解压缩的命令文件如tar、gzip、gunzip、compress、uncompress等命令文件拷贝到/home/ftpd/bin目录下。 4. 关于/etc/ftpaccess的设置 这个配置文件是FTP服务器上最重要的配置文件,它直接关系到你的FTP服务器能否正常工作,还有许多权限上的设置。下面是一个典型的配置实例。 需要什么来搜一搜吧so.bitsCN.comloginfails 3 class local real * class remote anonymous guest * limit remote 100 Any /etc/ftpd/toomany.msg message /etc/ftpd/welcome.msg login compress yes local remote tar yes local remote private yes passwd-check rfc822 warn log commands real log transfer anonymous guest inbound outbound log transfer real inbound shutdown /etc/ftpd/shut.msg delete no anonymous,guest overwrite no anonymous,guest rename no anonymous chmod no anonymous,guest umask no anonymous upload /home/ftpd * no upload /home/ftpd /bin no upload /home/ftpd /etc no upload /home/ftpd /pub yes real 0644 dirs upload /home/ftpd /incoming yes real guest anonymous 0644 dirs alias in /incoming email guestxxx.net email guestyyy.net deny *.com.tw /etc/ftpd/deny.msg 下面我们逐句进行讲解,并给出每条设置的含义,以便大家触类旁通,以便根据自己FTP服务器的具体情况进行合理的设置。 需要什么来搜一搜吧so.bitsCN.com1 格式:loginfails 次数 功能:设定当用户登录到FTP服务器时,允许用户输错密码的次数。 实例:loginfails 3:密码输入错误三次就切断连接。 2 格式:class 类名 real/guest/anonymous IP地址 功能:这个指令的功能设定FTP服务器上用户的类别。并可对客户端的IP地址进行限制,允许某部分的IP地址或全部的IP地址访问。而在FTP服务器上的用户基本上可以分为以下三类: real 在该FTP服务器有合法帐号的用户; guest 有记录的匿名用户; anonymous 权限最低的匿名用户 实例:class local real *:定义一个名为local的类,它包含了在任何地方登录(*代表所有IP地址)的real用户。 Tags: 配置linux FTP服务器 bitsCN全力打造网管学习平台 class remote anonymous guest *:定义一个名为remote的类,它包含了在任何地方登录的anonymous用户和guest用户。 3 格式:limit 类别 人数 时间 文件名 功能:这个指令的功能为设置指定的时间内指定的类别允许连接的指定人数上限。当达到人数上限的时候,显示指定文件的内容。 实例:limit remote 100 Any /etc/ftpd/toomany.msg:在任何时间内,remote类的访问用户达到100人时,将不再允许无法产生新的连接,当第101位客户要连接时,连接将失败,并象用户出示文件/etc/ftpd/toomany.msg的内容。 4 格式:message 文件名称 指令 功能:当用户执行所指定的指令时,系统将指定的文件内容显示出来。 实例:message /etc/ftpd/welcome.msg login:当用户执行login命令时,也就是登录到FTP服务器上的时候,系统将显示文件/etc/ftpd/welcome.msg的内容。 5 格式:compress yes/no 类别 功能:设置哪一个类别的用户可以使用compress(压缩)功能。 实例:compress yes local remote:允许local和remote两个类别的用户都能使用 compress(压缩)功能。 bitsCN.com中国网管联盟 6 格式:tar yes/no 类别 功能:设置哪一个类别的用户可以使用tar(归档)功能。 实例:tar yes local remote:允许local和remote两类的用户都能使用tar功能。 7 格式:private yes/no 功能:设定是否支持群组对文件的取用。 实例:private yes:支持群组对文件的取用。 8 格式:passwd-check none/trivial/rfc822 enforce/warn 功能:设定对匿名用户anonymous的密码使用方式。 none 表示不做密码验证,任何密码都可以登录; trival 表示只要输入的密码中含有字符“”就可以登录; rfc822 表示密码一定要符合RFC822中所规定的E-Mail格式才能登录; enfore 表示输入的密码不符合以上指定的格式就不让登录; warn 表示密码不符合规定时只出现警告信息,仍然能够登录。 实例:passwd-check rfc822 warn:希望能够得到符合规定的E-Mail作为密码,但如果不是,也允许登录。 9 格式:log command real/guest/anonymous 功能:设置哪些用户登录后的操作记录在文件/usr/adm/xferlog中。Tags: 配置linux FTP服务器RedHat9-vsftp配置大全3.2 VSFTP安全与效能兼备的ftp 服务器3.2.1 VSFTP 概述FTP,file transfer protocol,这是档案传输的通讯协议,也是一般最常用来传送档案的方式。读者在使用RedHat9 的时候,可能会感受到ftp server 有一些改变:第一,就是ftp server 只剩下vsftp,原有的wuftp 等都没放入第二,就是vsftp 从XINETD 中独立出来,并将设定档从/etc/vsftpd.conf 之中移到/etc/vsftpd/vsftpd.conf。为什么做这样的改变?可以想见的是vsftp 已有独立运作的能力,不需要XINETD 来做更进一步的管控,并且类似sendmail、httpd、ssh、samba 等,将设定文件的放入/etc 下独立的目录。FTP 分为两类,一种为PORT FTP,也就是一般的FTP 另一类是PASVFTP,分述如下: PORT FTP这是一般形式的FTP,首先会建立控制频道,默认值是port 21,也就是跟port 21 建立联机,并透过此联机下达指令。第二,由FTP server 端会建立数据传输频道,默认值为20,也就是跟port 20 建立联机,并透过port 20 作数据的传输。PASV FTP跟PORT FTP 类似,首先会建立控制频道,默认值是port 21,也就是跟port 21 建立联机,并透过此联机下达指令。第二,会由client 端做出数据传输的请求,包括数据传输port 的数字。这两者的差异为何?PORT FTP 当中的数据传输port 是由FTP server 指定,而PASV FTP 的数据传输port 是由FTP client 决定。通常我们使用PASV FTP,是在有防火墙的环境之下,透过client 与server 的沟通,决定数据传输的port。3.2.2 范例3.2.1. 直接启动VSFTP 服务这个范例是套用RedHat 的预设范例,直接启动vsftp。rootrelay vsftpd# /sbin/service vsftpd startStarting vsftpd for vsftpd: OK 3.2.2. 更换port 提供服务:将预设的port 21 更换为2121为了安全,或是以port 来区隔不同的ftp 服务,我们可能会将ftp port 改为21 之外的port,那么,可参考以下步骤。Step1. 修改/etc/vsftpd/vsftpd.conf新增底下一行listen_port=2121Step2. 重新启动vsftpdroothome vsftpd# /sbin/service vsftpd restartShutting down vsftpd: OK Starting vsftpd for vsftpd: OK 3.2.3. 特定使用者peter、john 不得变更目录使用者的预设目录为/home/username,若是我们不希望使用者在ftp 时能够切换到上一层目录/home,则可参考以下步骤。Step1. 修改/etc/vsftpd/vsftpd.conf将底下三行#chroot_list_enable=YES# (default follows)#chroot_list_file=/etc/vsftpd.chroot_list改为chroot_list_enable=YES# (default follows)chroot_list_file=/etc/vsftpd/chroot_listStep2. 新增一个档案: /etc/vsftpd/chroot_list内容增加两行:peterjohnStep3. 重新启动vsftpdroothome vsftpd# /sbin/service vsftpd restartShutting down vsftpd: OK Starting vsftpd for vsftpd: OK 若是peter 欲切换到根目录以外的目录,则会出现以下警告:ftp> cd /home550 Failed to change directory.3.2.4. 取消anonymous 登入若是读者的主机不希望使用者匿名登入,则可参考以下步骤。Step1. 修改/etc/vsftpd/vsftpd.conf将anonymous_enable=YES改为anonymous_enable=NOStep2. 重新启动vsftpdroothome vsftpd# /sbin/service vsftpd restartShutting down vsftpd: OK Starting vsftpd for vsftpd: OK 3.2.5. 安排欢迎话语若是我们希望使用者在登入时,能够看到欢迎话语,可能包括对该主机的说明,或是目录的介绍,可参考以下步骤。首先确定在/etc/vsftpd/vsftpd.conf 当中是否有底下这一行dirmessage_enable=YESRedHat9 的默认值是有上面这行的。接着,在各目录之中,新增名为.message 的档案,再这边假设有一个使用者test1,且此使用者的根目录下有个目录名为abc,那首先我们在/home/test1之下新增.message,内容如下:Hello Welcome to the home directoryThis is for test only.接着,在/home/test1/abc 的目录下新增.message,内容如下:Welcome to abcs directoryThis is subdir.那么,当使用者test1 登入时,会看到以下讯息:230- Hello Welcome to the home directory230-230- This is for test only.230-若是切换到abc 的目录,则会出现以下讯息:250- Welcome to abcs directory250-250- This is subdir .3.2.6. 对于每一个联机,以独立的process 来运作一般启动vsftp 时,我们只会看到一个名为vsftpd 的process 在运作,但若是读者希望每一个联机,都能以独立的process 来呈现,则可执行以下步骤。Step1. 修改/etc/vsftpd/vsftpd.conf新增底下一行setproctitle_enable=YESStep2. 重新启动vsftpdroothome vsftpd# /sbin/service vsftpd restartShutting down vsftpd: OK Starting vsftpd for vsftpd: OK 使用ps -ef 的指令,可以看告不同使用者联机的情形,如下图所示:roothome vsftpd# ps -ef|grep ftproot 2090 1 0 16:41 pts/0 00:00:00 vsftpd: LISTENERnobody 2120 2090 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244:connectedtest1 2122 2120 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244/test1:IDLEnobody 2124 2090 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244:connectedtest2 2126 2124 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244/test2:IDLEroot 2129 1343 0 17:20 pts/0 00:00:00 grep ftproothome vsftpd#3.2.7. 限制传输档案的速度:本机的使用者最高速度为200KBytes/s,匿名登入者所能使用的最高速度为50KBytes/sStep1. 修改/etc/vsftpd/vsftpd.conf新增底下两行anon_max_rate=50000local_max_rate=200000Step2. 重新启动vsftpdroothome vsftpd# /sbin/service vsftpd restartShutting down vsftpd: OK Starting vsftpd for vsftpd: OK 在这边速度的单位为Bytes/s,其中anon_max_rate 所限制的是匿名登入的使用者,而local_max_rate 所限制的是本机的使用者。VSFTPD 对于速度的限制,范围大概在80%到120%之间,也就是我们限制最高速度为100KBytes/s,但实际的速度可能在80KBytes/s 到120KBytes/s 之间,当然,若是频宽不足时,数值会低于此限制。3.2.8. 针对不同的使用者限制不同的速度:假设test1 所能使用的最高速度为250KBytes/s,test2 所能使用的最高速度为500KBytes/s。Step1. 修改/etc/vsftpd/vsftpd.conf新增底下一行user_config_dir=/etc/vsftpd/userconfStep2. 新增一个目录:/etc/vsftpd/userconfmkdir /etc/vsftpd/userconfStep3. 在/etc/vsftpd/userconf 之下新增一个名为test1 的档案内容增加一行:local_max_rate=250000Step4. 在/etc/vsftpd/userconf 之下新增一个名为test2 的档案内容增加一行:local_max_rate=500000Step5. 重新启动vsftpdroothome vsftpd# /sbin/service vsftpd restartShutting down vsftpd: OK Starting vsftpd for vsftpd: OK 3.2.9-1. 建置一个防火墙下的ftp server,使用PORT FTP mode:预设的ftpport:21 以及ftp data port:20启动VSFTPD 之后执行以下两行指令,只允许port 21 以及port 20 开放,其它关闭。iptables -A INPUT -p tcp -m multiport -dport 21,20 -j ACCEPTiptables -A INPUT -p tcp -j REJECT -reject-with tcp-reset3.2.9-2. 建置一个防火墙下的ftp server,使用PORT FTP mode:ftp port:2121以及ftp data port:2020Step1. 执行以下两行指令,只允许port 2121 以及port 2020 开放,其它关闭。iptables -A INPUT -p tcp -m multiport -dport 2121,2020 -j ACCEPTiptables -A INPUT -p tcp -j REJECT -reject-with tcp-resetStep2. 修改/etc/vsftpd/vsftpd.conf新增底下两行listen_port=2121ftp_data_port=2020Step3. 重新启动vsftpdroothome vsftpd# /sbin/service vsftpd restartShutting down vsftpd: OK Starting vsftpd for vsftpd: OK 在这边要注意,8、9 两个例子中,ftp client(如cuteftp)的联机方式不能够选择passive mode,否则无法建立数据的联机。也就是读者可以连上ftpserver,但是执行ls、get 等等的指令时,便无法运作。3.2.10. 建置一个防火墙下的ftp server,使用PASS FTP mode:ftp port:2121以及ftp data port 从9981 到9986。Step1. 执行以下两行指令,只允许port 2121 以及port 9981-9990 开放,其它关闭。iptables -A INPUT -p tcp -m multiport -dport2121,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990 -j ACCEPTiptables -A INPUT -p tcp -j REJECT -reject-with tcp-resetStep2. 修改/etc/vsftpd/vsftpd.conf新增底下四行listen_port=2121pasv_enable=YESpasv_min_port=9981pasv_max_port=9986Step3. 重新启动vsftpdroothome vsftpd# /sbin/service vsftpd restartShutting down vsftpd: OK Starting vsftpd for vsftpd: OK 在这边要注意,在10 这个例子中,ftp client(如cuteftp)的联机方式必须选择passive mode,否则无法建立数据的联机。也就是读者可以连上ftpserver,但是执行ls,get 等等的指令时,便无法运作。8.2.11. 将vsftpd 与TCP_wrapper 结合若是读者希望直接在/etc/hosts.allow 之中定义允许或是拒绝的来源地址,可执行以下步骤。这是简易的防火墙设定。Step1. 确定/etc/vsftpd/vsftpd.conf 之中tcp_wrappers 的设定为YES,如下图所示:tcp_wrappers=YES这是RedHat9 的默认值,基本上不需修改。Step2. 重新启动vsftpdroothome vsftpd# /sbin/service vsftpd restartShutting down vsftpd: OK Starting vsftpd for vsftpd: OK Step3. 设定/etc/hosts.allow,譬如提供111.22.33.4 以及10.1.1.1 到10.1.1.254 连线,则可做下图之设定:vsftpd : 111.22.33.4 10.1.1. : allowALL : ALL : DENY8.2.12. 将vsftpd 并入XINETD若是