vsFTPd

这里是配置 vsFTPd 的相关命令 , 包括配置文件以及注意事项的总结 , 至于什么是 vsFTPd , 怎么架设等问题可以 Google 之.
这个是繁体-简体说法对照表 , 不习惯的同学可以猛击试试 :-)

Server

涉及到的配置文件

1) /etc/vsftpd/vsftpd.conf
这个档案的设定是以 bash 的变数设定相同的方式来处理的 , 也就是 " 参数=设定值  " 来设定的 , 等号两边不能有空白 .

2) /etc/pam.d/vsftpd
这个是 vsftpd 使用 PAM 模组时的相关设定档 . 主要用来作为身份认证之用 , 还有一些使用者身份的抵挡功能 , 也是透过这个档案来达成的 .

3) /etc/vsftpd/ftpusers
与上一个档案有关系 , 也就是 PAM 模组 ( /etc/pam.d/vsftpd指定的是无法登入的使用者设定档 ) . 这个档案的设定很简单 , 你只要将 “ 不想让他登入的帐号 " 写入这个档案即可 . 一行一个帐号.
绝大部分的系统帐号都在这个档案内喔 , 也就是说 , 系统帐号预设是没有办法使用 vsftpd 的 . 如果你还想要让某些使用者无法登入 , 写在这里是最快的 .

4) /etc/vsftpd/user_list
这 个档案是否能够生效与 vsftpd.conf 内的两个参数有关 , 分别是 " userlist_enable, userlist_deny  "  . 如果说 /etc/vsftpd/ftpusers 是 PAM 模组的抵挡设定项目 , 那么这个 /etc/vsftpd/user_list 则是 vsftpd 自订的抵挡项目 . 事实上这个档案与 /etc/vsftpd/ftpusers 几乎一模一样 , 在预设的情况下 , 你可以将不希望可登入 vsftpd 的帐号写入这里 . 不过这个档案的功能会依据 vsftpd.conf 设定档内的 userlist_deny={YES/NO} 而不同 .

5) /etc/vsftpd/chroot_list
这 个档案的主要功能是可以将某些帐号的使用者 chroot 在他们的家目录下 . 但这个档案要生效与 vsftpd.conf 内的 " chroot_list_enable, chroot_list_file  " 两个参数有关 . 如果你想要将某些实体用户限制在他们的家目录下而不许到其他目录去 , 可以启动这个设定项目 .

6) /var/ftp/
这个是vsftpd 的预设匿名者登入的根目录 .

更详细的使用说明可以 man 5 vsftpd.conf .

涉及到的命令

vsftpd 可以拥有两种启动的方式 , 分别是一直在监听的 stand alone  , 一种则是透过 xinetd 这个super daemon 来管理的方式 , 两种方式所使用的启动程序不太相同 , 而我们的 CentOS 则预设是以 stand alone 来启动的 .

利用系统提供的 script 来启动 vsftpd
# /etc/init.d/vsftpd start

自行设定以 super daemon 来启动
如果你的 FTP 是很少被使用的 , 那么利用 super daemon 来管理不失为一个好主意 .

# vi /etc/vsftpd/vsftpd.conf
修改 listen 选项如下: listen= NO

# vi /etc/xinetd.d/vsftpd
将配置文件写在改文件下

# /etc/init.d/xinetd restart

# netstat -tulnp| grep 21
测试是否启动

注意 : 不管你要使用哪种启动的方式 ,  切记不要两者同时启动 , 否则会发生错误的 !

Client

1) 常用的 CLI 方式 : ftp , lftp 等

2) 利用浏览器功能
我们在 Apache 这个 WWW 伺服器的章节当中曾经谈过浏览器所支援的协定 , 其中一个就是ftp这个协定 .  
这个协定的处理方式可以在网址列的地方这样输入的 :  
ftp://username@your_ip
如果你没有输入那个 username@ 的字样时 , 系统预设会以匿名登入来处理这次的连线 .

安全问题

1) 防火墙设定

2) 使用 tcp wrappers 的方式来处理 FTP 的连线

3) 建立限制系统帐号登入的档案
/etc/vsftpd.ftpusers : 就是 /etc/pam.d/vsftpd 这个档案的设定所影响的;
/etc/vsftpd.user_list : 由 vsftpd.conf 的 userlist_file 所设定 .

4) chroot 的使用

5) 限制下载频宽

6) 限制最大上线人数与同一IP的来源数

FAQ

Q : 在 Client 端上面发现无法连线成功
A :
1) ptables 防火墙的规则当中 , 是否开放了client 端的 port 21 登入 ?
2) 在 /etc/hosts.deny 当中 , 是否将 client 的登入权限挡住了 ?
3) 在 /etc/xinetd.d/vsftpd 当中 , 是否设定错误 , 导致 client 的登入权限被取消了 ?

Q : 如果 Client 已经连上 vsftpd 伺服器 , 但是却显示 " XXX file can't be opend " 的字样
A : 最主要的原因还是在于在 vsftpd.conf 当中设定了检查某个档案 , 但是您却没有将该档案设定起来 , 所以 , 请检查 vsftpd.conf 里面所有设定的档案档名 , 使用 touch 这个指令将该档案建立起来即可.

Q : 如果 Client 已经连上 vsftpd 伺服器 , 却无法使用某个帐号登入
A : 在 vsftpd.conf 里面是否设定了使用 pam 模组来检验帐号 , 以及利用 userlist_file 来管理帐号 ? 请检查 /etc/vsftpd.ftpusers 以及 /etc/vsftpd.user_list 档案内是否将该帐号写入了 ?

Q : 如果Client 无法上传档案 , 该如何是好 ?
A :
1) 最可能发生的原因就是在 vsftpd.conf 里面忘记加上这个设定 ” write_enable=YES " 这个设定 ; 2) 是否所要上传的目录 ” 权限 " 不对 , 请以 chmod 或 chown 来修订 ;
3) 是否 anonymous 的设定里面忘记加上了底下三个参数 :
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
4) 是否因为设定了email 抵挡机制 , 又将email address 写入该档案中 ;
5) 是否设定了不许 ASCII 格式传送 , 但 Client 端却以 ASCII 传送呢 ? 请在 client 端以 binary 格式来传送档案 .

上面是常发现的错误 , 如果还是无法解决您的问题 , 请您务必分析一下这两个档案 : /var/log/vsftpd.log 与 /var/log/messages  , 里面有相当多的重要资料 , 可以提供给您进行除错 .

本文是总结的鸟哥教程 , 将其中的精华提取了一下 , 想看全文的点击这里.
    
 

  • http://www.freetstar.com freetstar

    mark