在 Internet 上面的传输协议当中, FTP ( File Transfer Protocol ) 算是一个最古老的协定之一了!早期还没有这么多好用的协议之前( 例如 SAMBA ),都是使用 FTP 来进行数据的传递的呢!另外,一般来说,数据的传输以 FTP 这个协议来传送是相当的快速的,而且某些场合当中其实也相当的方便。不过,值得注意的是,使用 FTP 来传输时,其实是具有一定程度的『危险性』,因为数据在 Internet 上面是完全没有受到保护的『明码』机制!所以,其实鸟哥不太建议大家使用这个服务器的啦!尤其当你建置好了 FTP 之后,如果经常进行数据的传递,对于您的网络频宽『真的有很大的损害』啊!不过,无论如何, FTP 仍然有其存在的必要!例如中山大学的 FTP 站就作的相当的棒啊!所以,底下我们就来谈一谈用在这个古老的协议上面,最古老的服务器之一: 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
|