以下文章转自
http://shikuan.diandian.com/post/2011-12-16/11125514
http://md20040208.blog.163.com/blog/static/3006942720108158230115/
见过实验安装成功了的!!!
搭建环境】Linux (Fedora 16)
【基本实现】在自己的电脑上搭建ftp,实现同一网段匿名登录,并能上传下载文件。
【涉及技术】vsftpd,iptables
【方法】
1. 先查看自己的机子上是否已安装vsftpd (very secure FTP Daemon),这是linux上常用的ftpd技术,配置方法比较类似配置Apache。命令行输入:
#rpm -qa | grep vsftp
若出现内容,则表示已安装;若无,则手动抓包下载:
# sudo yum install vsftpd
注意:如果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
启动linux自带的ftp服务器: # service vsftpd start 。如果想linux启动是自动启动ftp服务器: # chkconfig vsftpd on 。
运行putty,以root身份进入,出现了报错 530 Permission denied ,感觉很奇怪,因以普通用户是可以进入的。
原因是我们 /etc/vsftpd.ftpusers 和 /etc/vsftpd.user_list 禁掉了root这个用户。这时我们需要修改这两个文件。
(1)/etc/vsftpd.user_list的默认文件(则是表示具体用户)
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
这时我们要在 root 前加上 # 。
(2)/etc/vsftpd.ftpusers 的默认文件(所有可以登录该FTP的用户属性)
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
这时我们要在 root 前加上 # 。