【搭建环境】Linux (Fedora 16)
【基本实现】在自己的电脑上搭建ftp,实现同一网段匿名登录,并能上传下载文件。
【涉及技术】vsftpd,iptables
【方法】
1. 先查看自己的机子上是否已安装vsftpd (very secure FTP Daemon),这是linux上常用的ftpd技术,配置方法比较类似配置Apache。命令行输入:
#rpm -qa | grep vsftp
若出现内容,则表示已安装;若无,则手动抓包下载:
# sudo yum install vsftpd
2 .启动vsftpd服务。很多教程写的是/etc/init.d/vsftpd start,但是我试了下后发现不行,应该如下输入:
# sudo service vsftpd start
相应的,start 可换成stop,restart等,从字面意思就知道其意思。
查看是否有启动vsftpd:
# pstree | grep vsftpd
若有则表示启动成功。至此,可通过#ftp 主机名/localhost/127.0.0.1 来测试ftp是否正常工作。
3. 配置 相关文件。vsftpd.conf 全局配置文件放在/etc/vsftpd/下。为了防止配置错了,先拷贝一份副本,之后进入文档进行编辑。完成后重启ftp即可。
#cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd1.conf
#sudo vim /etc/vsftpd/vsftpd.conf
为了允许匿名登录,则anonymous_enable必须等于YES,其他相应的配置属性简单列表如下:
anonymous_enable=YES 允许匿名登录
Local_enable=YES 允许本地用户登录
write_enable=YES 开放本地用户的写权限
dirmessage_enable=YES 当切换到目录时,显示该目录下的.message隐含文件的内容
xferlog_enab1e =YES 激活上传和下载日志
connect_from_port_20 = YES 启用FTP数据端口的连接请求
xferlog_std_format =YES 使用标准的ftpd xferlog日志格式
pam_service_name=vsftpd 设置认证服务的配置文件名称,该文件存放在/etc/pam.d/
userlist_enable=YES 激活vsftpd检查userlist_file指定用户是否可以访问vsftpd服务器
4. 本机进行测试。在浏览器上输入ftp://localhost或者ftp://127.0.0.1,若搭建成功,则会有相应的文件夹,而这文件夹是默认在/var/ftp/下,当然以后你还可以进行修改。另一个方法是可以直接在命令行输入:
#ftp 127.0.0.1
因为匿名登录,跳过输入用户名和密码后输入:
ftp>user anonymous
再次跳过输入密码,此时会显示登录成功的字样。
5. 关闭防火墙。此时去同一网段的主机访问ftp,会发现一直链接不上。暂时了解到的是现在的linux系统为了更好地控制 IP 信息包过滤和防火墙配置,使用了iptables的东西。首先得关闭SElinux,该配置文件在/etc/selinux/下:
#vim /etc/selinux/config
找到相应语句,将其改成:SELINUX=disabled
重启之后,如果发现还不行,则暂时的办法可以关闭整个防火墙(不推荐):
#sudo service iptables stop
到了此步则肯定能从别的主机访问自己搭建的ftp的,只是可能还需要涉及文件夹权限问题,修改之后就能实现文件上传下载了。
完毕。
【补充】
若出现vsftpd: refusing to run with writable anonymous root的错误,大概是ftp目录权限问题,修正方法:
# chown root:root /var/ftp
# chmod 755 /var/ftp