最古老的 Wu FTP 服务器
|
|
实体用户(Real user)
|
|
访客(Guest)
|
|
匿名者(anonymoust)
|
|
事实上,使用 Wu ftp 来架设你的 FTP 服务器时,还是以 RPM 的方式来安装比较好啦!另外,如果您的 Linux distribution 提供其他版本的 FTP 服务器,呵呵!那么就不要使用 wu ftp 也没有关系啊!这是因为 wu ftp 实在是太古老了,所以很多的黑客软件都是针对他来设计的,也因为如此啊,所以才会产生『Wu FTP 服务器比较不安全』的情况啊!好了,底下我们以 Red Hat 7.x 的版本来进行说明吧。基本上,一个 FTP 服务器包含 Server 与 Client 用途的套件至少要有:
[root@test root]# rpm -qa | grep ftp
ncftp-3.0.3-6
ftp-0.17-12
wu-ftpd-2.6.1-20
其中:如果没有安装,请马上安装吧!如果不晓得怎么安装,那么请拿出『鸟哥的 Linux 私房菜 -- 基础学习篇』好好的将 mount CD 的指令、搜索的指令,以及 RPM 的指令瞧一瞧先!
- wu-ftpd :这就是主要的 FTP 服务器套件啦!
- ftp :提供 ftp 指令,就是 client 端的工具啦!
- ncftp :提供匿名登录的 FTP 网站的 client 端相当棒的另一套连接 FTP 软件!
[root@test
root]# vi /etc/ftpaccess
# 1. 设置人物群组名称 # 设置这个 FTP 服务器的人物身份设置,使用 class 来设置的!他的语法是: # class <人物群组名称> <用户身份1,用户身份2,..> <允许连接的来源> class all real,guest,anonymous * # 上面的意思是说,我设置一个类别群组为 all ,这个 all 里面就包含了 # 三种身份的用户,就是 FTP 缺省的 real, guest 与 anonymous 这三个, # 需要注意的是,这三个类别的用户之间是以逗号『,』隔开的,并没有空白字符 # 而这个 class 允许的来源来自任何地方『*』。 # 这个 class 可以多重设置,并且,万一重复设置时,以第一个出现的 class 类别 # 为准!举个例子,假如我的 FTP 里面的 real 仅允许学术网络登录,至于其他 # 的 guest 与 anonymous 则虽然可以由任何地方登录,但是不可以由 chinait.com # 这个网域以及 61.141.0.0/16 这个网域登录时,那我可以这样设置两个 class 喔: # class allone real,guest,anonymous *.edu.tw # class alltwo guest,anonymous !*.chinait.com !61.141.0.0/16 * # 请注意到,惊叹号『!』有代表『否,不允许』的意思存在,而星号『*』则代表 # 任何地方的意思,则如上面所设置时,如此一来,学术单位可以连到我的 FTP , # 至于 guest 与 anonymous 则可以任何地方连进,当然,除了上面的两个网域之外 # 所以说,经由这个 class 的设置,就可以轻易的将三种身份是否可以登录主机的 # 状态搞定了! ^_^ # 2. 设置系统的 FTP 管理员的 e-mail 信箱地址,与主机名称! # 单纯的就是显示出系统当中 FTP 服务器管理员的网址啦!缺省的设置如下: email root@localhost hostname vbird.adsldns.org # 一般来说,我会将这个 e-mail 后面的地址写上可以被用户发信的信箱,例如: # email testing@test.adsldns.org # 这样的格式!这个 email 可能会出现在进出网站时的欢迎画面当中! # 最大的任务是:当用户发现问题的时候,可以跟系统的管理员联系啊! # 所以当然要写下『可以收信』的正常 email 啰! # 至于那个 hostname 则仅与欢迎画面时的变量有关! # 3. 允许同一次连接当中,错误登录的次数 # 为了避免被不明攻击者的『暴力攻击』法,所以在一次连接当中, # 仅允许对方最多有 5 次的登录机会,如果密码或 ID 一直发生错误, # 则会将该连接『踢』掉的啦! loginfails 5 # 当然啰!如果您想将登录的次数改小一点的话,也可以使用『loginfails 3』 # 4. 向用户显示『README, 读我』文件的内容消息! # 当用户登录或者变换目录时,若目的端目录有 README 这个文件时 # (可以附加文件名),则向用户显示该文件的内容!语法为: # <readme> <README*> <动作> # 一般来说,动作有『登录』与『变换目录』,代号为 login 与 cwd=* readme README* login readme README* cwd=* # 举个例子来说,我是 testing 这个身份的用户,在我的家目录内有个文件: # /home/testing/data/README.important # 那么当我使用 FTP 软件连进我的家目录 (/home/testing) 然后切换目录到 # /home/testing/data 后,我的屏幕就会出现『请读取 README.important』 # 的字样啰!以提醒用户之用! # 5. 与 readme 的意义蛮相同的!不过这个 message 却会将后面所接的文件的 # 内容直接显示在屏幕上面,而不仅是告知用户去读取而已~ message /welcome.msg login message .message cwd=* # 上面的意思是说,当我 login 或者切换到任何有文件名为 .message 的目录时, # 该文件的内容就会显示到屏幕上面!一般来说,那个 /welcome.msg 就是 # 『进站欢迎画面』啰!这个等一下我们在底下会独立出一小节来介绍他! # 6. 是否提供用户在线立即运行的指令! # 一般的格式为: # <指令名称> <是否允许/yes/no> <针对的对象是谁> compress yes all tar yes all chmod no guest,anonymous delete no anonymous overwrite no anonymous rename no anonymous umask no all # 以上面的例子来说,我允许任何成功登录我主机的用户(all)使用我的 # FTP 主机来运行压缩这个指令的动作!但是我不许匿名者(anonymous) # 使用我的 FTP 主机进行删除(delete)以及改名(rename)的动作! # 你当然还可以增加自己所想要提供,或者减少提供用户使用的指令! # 当然啦,既然 FTP 主要是针对『文件』,所以指令以文件的删除、移动、 # 更改与压缩为主! # 7. 将用户运行的部分指令历程记录到 /var/log/xferlog 这个文件 # FTP 进行上传、下载或者其他用户动作时,可以将过程消息记录下来, # 记录的文件就是 /var/log/xferlog 这个文件啰!语法为: # <log> <欲登录的项目> <记录的用户身份> <何种动作> log transfers anonymous,guest,real inbound,outbound # 上面说明的是『针对文件传输(transfers)进行记录,而针对所有人均纪录, # 分别记录上传与下载(inbound,outbound)』,请注意,身份如果有多种,要以 # 逗号『,』隔开,不要加空白喔!所以,当你的 FTP 用户连上主机, # 并且有任何文件传输的动作时,则文件大小以及文件数等信息,就会被纪录 # 到 /var/log/xferlog 里面去啦!而除了文件传输之外,还有什么可以纪录的呢? # 基本上,那个『欲登录的项目』内容就包含了下面几项数据: # a. log commands <身份> :例如『log commands real,anonymous』,表示 # real 与 anonymous 这两种身份的人,在 FTP 上面所下达的任何指令君会 # 被纪录在 /var/log/xferlog 里面 # b. log security <typelist> :例如『log security guest,anonymous』 # 表示当 guest 与 anonymous 用户『违反安全机制』时,则会将当时 # 用户所下达的指令或者其他动作纪录下来! # 8. 关闭 FTP 的设置档! # 我们可以设置关闭 FTP 这个服务的时间,就利用 shutdown 后面接的文件! shutdown /etc/shutmsg # 如果 /etc/shutmsg 不存在,则 FTP 服务就不会被关闭!所以不存在没关系! # 而如果 /etc/shutmsg 存在的话,他的内容包含有底下这些数据(注意: # 第一行为时间参数,共有七个时间参数,用空白键分隔,而提示文本可以随便 # 编写内容喔!也可以使用变量啊!): # <年> <月> <日> <时> <分> <抵挡新连接> <删除已连接> # <提示文本> # 年:任何大于 1970 年的年份;月:0-11!请注意啊!是由 0-11 喔! # 0 代表 1 月、 1 代表 2 月! # 日:当然就是 1-31 啰! ;时:由 0-23 ;分:0-59 # 抵挡新连接与删除已连接:格式是 HHMM 例如 90 分钟则是 0130 ,在关机前的 # 设置时内,会拒绝新连接与将以连接之信道切除喔!例如: # 『2003 5 30 12 0 0230 0030 # I will shutdown my FTP server !sorry!』 # 在 2003/6/30 的 12:00 要关闭 FTP ,而 12:00 之前的两小时30分内(09:30) # 就不许新的尝试登录的连接,而在 30 分钟前(11:30)就切掉已经已经连接之 # 用户连接!事实上,这个 shutdown 蛮有趣的!因为实际上,您的 FTP # 服务并没有关掉,仅只是让他人无法使用 FTP 而已啊!那么如何重新启动呢? # 很简单啊!将 /etc/shutmsg 杀掉,或者里面的时间更动一下即可! # 9. 匿名者的密码验证: # 如果您的 FTP 允许 anonymous 的话,那么还是需要让匿名者输入密码的, # 不过就是密码的设置比较松散就是了!目前的密码格式为: # <passwd-check> <no|trivial|rfc822> <动作> passwd-check rfc822 warn # 上面说的是,以匿名者登录的用户也需要输入密码,而密码的格式为 rfc822, # 如果用户的密码不合格,那么就警告(warn)用户,但仍允许用户登录! # 密码的格式方面目前有两种(no是不需要密码确认,所以不讨论!) # trivial:密码当中必须含有 @ 这个 e-mail 的字符; # rfc822 :密码必须符合 frc822 的规范! # 通常我们使用的是 rfc822 即可!至于动作主要有两种动作: # warn :用户输入错误的密码时,仅显示警告消息,仍允许其登录; # enforce:用户若输入错误密码,储显示警告消息,并中断连接喔! # 注意: # 如果你不想让某个 email 的型态通过认证时,可以使用 deny-email 这个 # 项目来抵挡!举个例子来说,你不想让 IE 的缺省邮件地址通过认证,可使用 # deny-email IE?0User@ # deny-email mozilla@ # 上面这两个项目可以同时存在,如果还有不想让他通过的 email address # 可以持续上面的设置多行!这有什么用途呢?如果您不想让 web browsers # 通过密码的确认,而仅想让类似一般的 FTP client 来连接,那么这个 # 限制项目就有用的很了!因为他可以将 IE 之类的 browsers 挡下来啊! # 10. 设置允许与不许登录 FTP 服务器的用户与群组 deny-uid %-99 %65534- deny-gid %-99 %65534- allow-uid ftp allow-gid ftp # 这个是在 Red Hat 系统上面添加出来的设置啦!在一般正常的系统当中, # UID 小于 100 通常是系统帐号,而 UID 大于 65534 可能有安全上的问题, # 所以,我们就直接将这两段 UID 与 GID 切掉啊!让他们无法登录,也就可以 # 拒绝某些不当的入侵攻击了!那就是 deny-uid 与 deny-gid 的功效! # 所以,上面的意义是,小于99与大于65534 的UID/GID都予以抵挡连接; # 而开放的 UID 与 GID 则仅有 ftp 这个群组与用户喔! # deny-uid 后面除了接数字外,也可以直接接帐号名称,例如要挡住 testing # 与 testqq 这个用户时,可以设置: # deny-uid testing testqq # 后面可以接多个 UID 或帐号或者使用范围,例如抵挡 100 到 1000 之间的 UID # deny-uid 100-1000 # 至于 allow-uid 则恰好相反啊!就是允许的意思~ |
[root@test
root]# vi /etc/xinetd.d/wu-ftpd
service ftp { disable = yes <==就是他,将他改为 no 即可! socket_type = stream wait = no user = root server = /usr/sbin/in.ftpd server_args = -l -a log_on_success += DURATION USERID log_on_failure += USERID nice = 10 } |
[root@test
root]# /etc/rc.d/init.d/xinetd restart
[root@test root]#
netstat
-tl
[root@test root]#
ftp
localhost
|
%T 本地端的主机时间(格式为
Fri Mar 21 11:28:50 2003)
%F 用户目前所在目录之 partition 所剩空间(不一定支持所有系统) %C 用户目前所在的目录 %E 系统管理员的 email ,这个就是刚刚设置 ftpaccess 内的 email 值 %R 远程主机的 IP 或 hostname ! %L 本地端主机的名称或 IP %U 用户的登录帐号名称 %M FTP 主机所能允许的用户最大连接数量 %N FTP 主机目前已经连接的用户数量 %B 关于硬盘容量的限额 %Q 目前的 block 数量 %I 最大的可用 inodes %i 针对 inodes 的限额 %H 当过度使用硬盘空间时的时间限制 %h 当使用过度文件时的时间限制 %s 预计关闭 FTP 的时间(与 /etc/shutmsg 有关) %r 预计关闭 FTP 前禁止再连接的时间(与 /etc/shutmsg 有关) %d 预计关闭 FTP 前已连接的中断时间(与 /etc/shutmsg 有关) |
[root@test
root]# vi /welcome.msg
Welcome to my FTP site. Now is the time ==> %T The host name is %L You are %U and from %R There are %N person in my site, now. If you have any problem please call me %E 是的!内容只要上面这样即可!,马上来测试一下设置的结果 [root@test root]# ftp localhost Connected to localhost (127.0.0.1). 220 vbird.adsldns.org FTP server (Version wu-2.6.1-20) ready. Name (192.168.1.100:test): test 331 Password required for test. Password: <==输入密码 230-Welcome to my FTP site. 230-Now is the time ==> Fri Mar 21 12:03:49 2003 230-The host name is vbird.adsldns.org 230-You are vbird and from 192.168.1.100 230-There are 1 person in my site, now. 230-If you have any problem please call me 230-root@localhost 230- 230 User test logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> bye |
[root@test
root]# vi /etc/shutmsg
2003 2 30 12 00 0100 0030 我将要关闭连接、请不要再进行连接啦! 即将关机的时间:%s 新连接失败的时间:%r 已连接关闭的时间:%d 注:上面的内容格式为两段,第一段就是时间的参数,分别是:
|
[root@test
root]# vi /etc/ftpaccess
# 规范的格式为: # <limit> <人物群组名称> <最大连接数> <时间> <被拒绝时显示的文档文件> limit all 20 Any /etc/ftpmaxnumber limit guest 10 Any /etc/ftpmaxnumber limit anonymous 5 Any0800-2000 /etc/ftpmaxnumber 由上面的限制当中,我们知道,在 all 这个人物群组当中,最大的同时上线 人数为 20 人,并且,这个设置是任何时刻均有效(Any),如果你是第 21 个 连接进来我的 FTP 的人,那么您的屏幕将会出现 /etc/ftpmaxnumber 这个文件 的内容,并且『无法连接进入我的 FTP 』!请特别留意 Any 的大小写,若 写错时,这个设置将不会生效! [root@test root]# vi /etc/ftpmaxnumber 这里已经太多人啦!请您等一下再进入! ^_^ [root@test root]# /etc/rc.d/init.d/xinetd restart |
[root@test
root]# vi /etc/ftpaccess
restricted-uid * restricted-uid 200-400 test testing [root@test root]# /etc/rc.d/init.d/xinetd restart |
[root@test
root]# vi /etc/ftpaccess
unrestricted-uid test testing |
[root@test
root]# vi /etc/ftpaccess
# 时间参数缺省都是以 秒 为单位的! timeout accept
120
timeout connect
120
timeout data
2400
timeout idle
1800
timeout maxidle
1800
limit-time anonymous
30
|
[root@test
root]# vi /etc/ftpaccess
# 给予的限制情况: # <file-limit> <in|out|total> <数目或 bytes 数> <身份群组> file-limit out 32 alltwo data-limit in 10240 alltwo # 上面的设置说明是这样的, alltwo 是一个 class 群组,这个在最前头 # 规定出来的啦!而 in 代表上传、out 代表下载, total 则代表总量! # 第一个范例是说, alltwo 这个群组当中的任何用户,在一次登录当中, # 可以下载的文件总数,这是以文件数量来计算的!至于第二个范例,则是说 # 在 alltwo 这个群组中的任何用户,均仅可『上传 10KB 的容量』! # 注意喔!那个数字代表的是 Bytes 的,要换算成 KBytes 则需要除以 1024 |
[root@test
root]# vi /etc/ftpaccess
# 给予的限制情况: # <throughput> <根目录> <次目录> <文件名> <bytes/s> <倍数> <地址> throughput /var/ftp * * 10240 - * throughput /home/test /public_html * 51200 - * throughput /home/test /realdown * oo - *.vbird.org # 上面我设置了两个有被限制的下载目录,分别是 /var/ftp 这个目录,以及 # /home/test/public_html 这个目录,需要注意的是, 10240 代表 10Kbytes # 喔!设置错误会让用户下载到疯掉啊!此外,那个 /home/test/realdown # 则是『全速』开放给用户下载喔! |
[root@test
root]# vi /etc/ftpaccess
# 给予的限制情况: # ud-dl-rate <数字> <用户身份群组> ul-dl-rate 2 all # 这表示 所有的人物 可以上传 1M 下载 2M 的意思! |
%xu 可上传的 bytes 数
%xd 可下载的 bytes 数 %xR 上传与下载的比例 (1:n) %xc 剩下的可用 bytes 数 %xT 时间限制 (分钟) %xE 由开始登录到目前的时间预估(分钟) %xU 上传限制 (与 file-limit 及 data-limit 的 in 有关) %xD 下载限制 (与 file-limit 及 data-limit 的 out 有关) |
[root@test
root]# vi .message
您可以上传/下载的比例为 1:%xR 您此次登录至目前剩下的时间:%xT 由登录到目前为止使用的时间:%xE 您可以上传的最大容量(KBytes):%xU 您可以下载的最大容量(KBytes):%xD |
[root@test
root]# vi /etc/passwd
.... 略 .... test:x:511:100:testacount:/home/test:/sbin/nologin .... 略 .... |
[root@test
root]# vi /etc/shells
/bin/sh /bin/bash /bin/tcsh /bin/csh /bin/zsh /sbin/nologin |
[root@test
root]# vi /etc/ftpaccess
# 几乎就是添加两行即可: guestuser 与 guest-root guestuser test guest-root /home/test/public_html test # 第一行说的是要将 test 这个用户变成 guest 啦! # 第二行则是说, test 这个用户的家目录是在 /home/test/public_html |
[root@test
root]# vi /etc/ftpaccess
guestuser * realuser test1 test2 # test1 与 test2 中间用空格隔开!这样就成功啦! |
[root@test
root]# vi /etc/ftpaccess
anonymous-root /home/ftp/public |
[root@test
root]# vi /etc/ftpaccess
# 格式很简单,就是: # upload <家目录> <次目录> <yes|no> <文件所属人> <群组> <权限> <目录> anonymous-root /home/ftp/public upload /home/ftp/public /upload yes ftp sys 0666 upload /home/ftp/public /upfiles yes ftp sys 0666 nodirs # 第二行显示的是,我的
/home/ftp/public/upload 可以允许匿名者上传数据,
|
[root@test
root]# vi /etc/ftpaccess
# nice <数值> <用户群组或身份> # defumask <数值> <用户群组或身份> nice 10 anonymous nice -5 real defumask 022 real defumask 002 anonymous # 请务必搞懂什么是 nice 与 umask 喔!上面的 defumask 就是 default umask # 的意思!不难理解吧?! |
[root@test
root]# vi /etc/ftpaccess
# 准备抵挡啰!就以 <deny> <地址或主机名称> <回复给用户消息的文档> deny 192.168.0.100 /etc/ftpdeny.msg deny *.adsldns.org /etc/ftpdeny.msg # 上面的设置当中,当 192.168.0.100 这个 IP 来的 FTP 要求封包时, # 不仅不提供其 FTP 的连接,并且会显示 /etc/ftpdeny.msg 这个文件的内容! # 同样的,只要来自 .adsldns.org 的网域的电脑也都会被抵挡啊! [root@test root]#
vi
/etc/ftpdeny.msg
|
[root@test
root]# vi /etc/ftpaccess
# 就直接使用最初的设置 deny-uid <帐号、UID或范围> deny-uid %-499 %65000- deny-gid %-499 %65000- allow-uid ftp allow-gid ftp |
[root@test
root]# vi /etc/ftphosts
# 格式为 <deny> <用户帐号> <不许连接的IP或主机名称> # 格式为<allow> <用户帐号> <不许连接的IP或主机名称> deny test 192.168.0.0/24 allow testing 192.168.1.0:255.255.255.0 # 注意上面这两种书写方式的不同的! deny test2 192.168.5.10 allow test2 * |
[root@test
root]# vi /etc/pam.d/ftp
#%PAM-1.0 auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed <==此行与上行为同一行 auth required /lib/security/pam_stack.so service=system-auth auth required /lib/security/pam_shells.so account required /lib/security/pam_stack.so service=system-auth session required /lib/security/pam_stack.so service=system-auth |
[root@test
root]# vi /etc/ftpaccess
# alias <你想要给这个目录起的名字> <实际 Linux 系统的目录> alias anonymousdir /var/ftp |
[root@test
root]# vi /etc/ftpaccess
# path-filter <群组> <消息文件> <允许字符> <不许字符1> <不许字符2> ... paht-filter anonymous /etc/pathmsg ^[-A-Za-Z0-9._]*$ ^\. ^- [root@test root]# vi /etc/pathmsg 请注意,您的文件名称不符合本站的限制,请检查: 1. 文件名起始字符需为英文或数字或底线; 2. 文件名起始字符不可为 . 或者减号 - |
[root@test
root]# vi /etc/ftpaccess
# passive ports <CIDR 地址> <最小 port> <最大 port> # pasv-allow <人员身份> <地址> passive ports 0.0.0.0/0 65501 65505 pasv-allow all * # 这代表来自任何地方的 IP 在要求 passive 连接模式时,将以 65501 ~ 65505 # 之间的 port 来做为他们 PASV 连接的要求啦!如此一来,则 passive ports # 将仅会随机选取 65501 ~ 65505 之间的 5 个 port 来做为 PASV 之用, # 其他的 port 将不会使用到 FTP 的 passive 模式!如此一来还可以建置 # 防火墙上面的 port mapping 呢!很不错吧! ^_^ |
[root@test
root]# vi /etc/xinetd.d/wu-ftpd
service ftp { disable = no socket_type = stream wait = no user = root server = /usr/sbin/in.ftpd server_args = -l -a log_on_success += DURATION USERID log_on_failure += USERID nice = 10 } |
1. 修改 wu-ftpd
这个里面关于 daemon 的名称:
[root@test root]# vi /etc/xinetd.d/wu-ftpd service vbftp <==修改这里就对啦! { disable = no socket_type = stream wait = no user = root server = /usr/sbin/in.ftpd server_args = -l -a log_on_success += DURATION USERID log_on_failure += USERID nice = 10 } 2. 修改 /etc/services 的 daemon 相关设置内容 [root@test root]# vi /etc/services vbftp 3366/tcp # 上面这一行可以加在这个 /etc/services 里面的最后一行!自己设置的啦! 3. 重新启动
xinetd
|
[root@test
root]# groupadd myftpusers
[root@test root]# useradd -m -g myftpusers -s /sbin/nologin wwwuser1 [root@test root]# useradd -m -g myftpusers -s /sbin/nologin wwwuser2 [root@test root]# useradd -m -g myftpusers -s /sbin/nologin ftpuser [root@test root]# passwd wwwuser1 <==不要忘记给三个人密码! |
[root@test
root]# vi /etc/ftpaccess
# 底下的数据为 VBird 的 FTP 主机设置范例 # ######################################################################## # 1. 针对 Server 的设置项目: ######################################################################## # 1.1 针对群组的设置项目 class all real,guest,anonymous 140.116.0.0/16 class allreal real 140.116.0.0/16 class allguest guest !61.141.0.0/16 * class allanonymous anonymous !61.141.0.0/16 * # 1.2 其他主机相关的设置项目
# 1.3 消息管理
# 1.4 指令管理
# 1.5 人物登录管理
# 1.6 时间相关的设置值
# 1.7 主机最大连接人数设置
# 1.8 被动的
port 设置
########################################################################
########################################################################
# 3.1 www users
# 3.2 FTP users
########################################################################
|
[root@test
root]# mkdir /var/ftp/upload
[root@test root]# chown ftp:sys /var/ftp/upload [root@test root]# mkdir /home/wwwuser1/public_html [root@test root]# mkdir /home/wwwuser2/public_html [root@tset root]# chown wwwuser1:myftpusers /home/wwwuser1/public_html [root@tset root]# chown wwwuser2:myftpusers /home/wwwuser2/public_html |
[root@test
root]# vi /etc/shells
/bin/bash ....(略)... /sbin/nologin |
事实上,我们在网络常用指令那个章节当中已经介绍过了 ftp 与 ncftp 这两个很好用的 client 端软件了,在这里我们再次的强调一下这两个软件,其中,比较重要的是强调传输的模式。在 Server 与 Client 传输的过程中,数据的流动主要分为 binary 与 ascii 两种模式,需要注意的是:底下我们就来介绍两个软件吧!
- Binary 的发送方式当中,FTP Server 并不会去改变文件的内容,所以数据得以完整的呈现;
- 但在 ASCII 传输模式当中,主要将数据视为一般的纯文本档,例如:原代码或者是设置档等等,在这种传输模式当中,Server 会将文件以一行一行来发送,所以如果您以 ASCII 发送经过编译过的 binary program 时,将可能导致无法运行的问题(因为被转成文本档啦!)
ftp
远程发送数据当中,速度最快的协定之一
语法:
[root @test /root]# ftp [-p] host [port]
参数说明:
-p :启动 PASSIVE 模式!
范例:
[root @test /root]# ftp localhost <==缺省是以 port 21 来进行连接
[root @test /root]# ftp localhost 1354
如果你设置的 ftp 的 port 非正规的 21 ,则可以这样![root @test /root]# ftp localhost <==连接到远程主机
Connected to localhost (127.0.0.1).
220 localhost FTP server (Version wu-2.6.1-20) ready.
Name (127.0.0.1:test): test
331 Password required for test.
Password: <==输入密码
230 User test logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir <==显示远方主机的内容
ftp> cd <==变换远程主机的目录
ftp> close or bye or exit <==离开远程主机
ftp> get file <==取得远程主机的文件
ftp> mget file <==取得所有的文件,例如 mget .bash* !
ftp> put file <==将本地端文件 file 丢到远程主机上
ftp> mput file <==与 mget 差不多意思啦!
ftp> delete file <==杀掉远程主机的 file 文件
ftp> help <==显示求救指令!
ftp> mkdir dir <==在远程主机上面创建目录
ftp> lcd <==变换本地端路径!
ftp> ascii or binary <==重要的很!上面提过的!
ncftp
登录匿名主机最好用的文本接口 FTP 软件!
语法:
[root @test /root]# ncftp [host]
[root @test /root]# ncftp [ftp://domain.name/path]
参数说明:
可以直接连接到 host 主机,也可以直接连接到主机的某个路径之下,相当的方便
范例:
[root @test /root]# ncftp ftp.nsysu.edu.tw <==连接到中山大学 FTP 站
[root @test /root]# ncftp ftp://ftp.nsysu.edu.tw/Linux
直接连接到 Linux 底下的 Linux 目录下!远程主机的一些服务指令:
ncftp /pub/Linux > cd Redhat <==变换目录
ncftp /pub/Linux > dir <==显示目前目录下的文件与目录信息
ncftp /pub/Linux > get file1 <==将 file1 的数据存到本地端
ncftp /pub/Linux > get -z file1 file2 <==将 file1 存到本地改文件名为 fill2
ncftp /pub/Linux > get -A file1 file2
将 file1 以累积的方式(append)增加到 file2 这个文件
ncftp /pub/Linux > pub file <==将文件由本地端上传至远程!
ncftp /pub/Linux > rename file1 file2 <==将远程的主机之 file1 更名为 file2
ncftp /pub/Linux > rm file <==删除文件
ncftp /pub/Linux > rmdir directory <==删除目录
ncftp /pub/Linux > mget directory <==可以下载『整个目录』的数据!很棒吧!本地端主机的一些指令功能:
ncftp /pub/Linux > lcd <==变更本地端目前所在的目录
ncftp /pub/Linux > lls <==显示目前本地端所在目录的文件与目录信息
ncftp /pub/Linux > lmkdir <==在本地端创建目录
ncftp /pub/Linux > lpwd <==显示目前本地端主机的所在目录
ncftp /pub/Linux > lrm <==删除本地端的文件
ncftp /pub/Linux > lrmdir <==删除本地端的『目录』
/sbin/iptables
-A INPUT -p TCP -i eth0 -s 140.116.0.0/16 --dport 20:21 \
-j ACCEPT /sbin/iptables -A INPUT -p TCP -i eth0 -s 140.116.0.0/16 --dport 65501:65505\ -j ACCEPT |
[root@test
/root]# vi /etc/hosts.allow
in.ftpd : 140.116.0.0/255.255.0.0 [root@test /root]#
vi
/etc/hosts.deny
|