Linux上的ftp服务器vsftpd之配置满天飞--设置匿名用户访问(不弹出用户名密码框)以及其他用户可正常上传

一、问题背景

没事谁折腾这鬼玩意哦。。。还不是因为bug。

我们的应用,用户头像是存在ftp上的。之前的ftp服务器是一台windows,我们后台服务器程序收到用户上传头像的请求时,会用一个ROOT/ROOT的账户,连接ftp服务器。

获取到连接后,即进行上传。

上传:上传文件则存放在ROOT用户的home 目录(在windows上装的是server-U来充当ftp服务器,所以就是在Server-U里面配置了ROOT用户的home目录)。

上传完成后,会得到一个ftp协议类型的url。范例如:

ftp://10.10.20.2/userphoto/user7.png。

客户端拿到该url后,即用ftp客户端的库连接该url,获取到文件流,下载下来,进行展示。

这两天,ftp服务器从windows变到了redhat上。今天下午,测试突然报了个bug过来,说是用户头像不能正常展示了。what?于是开始查找问题。

梳理了半天,发现问题在于:linux上的ftp服务器,采用的是vsftpd软件。因为配置文件没配好的原因,利用前面的“ftp://10.10.20.2/userphoto/user7.png”就访问不到图片。

为什么说没配好呢,一开始报的错是:FTP 550 Failed to change directory

于是按照下面博文里的进行修改:https://blog.csdn.net/coreyC/article/details/80866533

没想到一波三折。

二、以为改好了,结果不能匿名访问

按照上面的博客进行了修改,最后关闭了匿名访问。

结果关掉了,果然,获取图片开始出问题了。因为客户端以前都是不需要输入用户名、密码,直接就能访问的。结果现在服务端关闭匿名访问后,要求输入用户名、密码了。

于是前端出错。

于是就开了允许匿名访问,结果一开了,就报了其他的错。

折腾了很久,我这里先把正确的配置贴一份:

# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd‘s
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).# 这里需要打开,允许匿名访问
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.# 之前说到我们用ROOT/ROOT来访问ftp,我们这里,ROOT/ROOT是我们的linux可以登录的用户名密码。要允许这类用户访问ftp,需要开启下面的选项
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.# 要允许写入操作。否则应该不能上传文件
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd‘s)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.# 匿名上传,我们也是开了的。为了把匿名访问弄起来,我们真是折腾了各个选项配置
anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.# 允许匿名创建目录
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# The target log file can be vsftpd_log_file or xferlog_file.
# This depends on setting xferlog_std_format parameter
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# The name of log file when xferlog_enable=YES and xferlog_std_format=YES
# WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log
#xferlog_file=/var/log/xferlog
#
# Switches between logging into vsftpd_log_file and xferlog_file files.
# NO writes to vsftpd_log_file, YES to xferlog_file
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=YES
#
# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
# sockets, you must run two copies of vsftpd with two configuration files.
# Make sure, that one of the listen options is commented !!
#listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES#匿名用户的根目录。这个非常重要
anon_root=/home/ROOT#匿名用户不要密码就靠这个
no_anon_password=YES#本地用户,如我们上传用的用户(ROOT/ROOT)的根目录。当然,我们给匿名配了那么多,估计匿名也能上传了。
local_root=/home/ROOT#该选项暂时不太清楚
ftp_username=ROOT

三、以为这样就好了?还没完

按上面配置后,匿名用户可以访问了没?并不行。

在winscp(包含ftp客户端功能)上,用匿名用户连接试试。(输入主机名后,点击匿名访问,会自动填写用户名密码等)

结果报错了。

500 OOPS: vsftpd: refusing to run with writable anonymous root

于是又面向百度查了一把,找到了下面的博客:

https://www.cnblogs.com/xiaofengkang/archive/2012/03/28/2422111.html

照着操作了一把后,再用上面的客户端进行匿名访问。ok了。

原文地址:https://www.cnblogs.com/grey-wolf/p/9878539.html

时间: 2024-10-11 12:19:55

Linux上的ftp服务器vsftpd之配置满天飞--设置匿名用户访问(不弹出用户名密码框)以及其他用户可正常上传的相关文章

linux centos6.5 ftp网页vsftpd配置

安装命令centos下 yum install vsftpd 出现“Complete!”时意味着安装完成.Linux中,系统对于大小写严格区分,比如abc和ABC是完全不相同的字符,要特别注意.配置Vsftpd虚拟用户使用vsftpd服务器之前,要对服务器进行配置,主要包括如下几个步骤:(1)生成虚拟用户口令库文件.(2)配置生成vsftpd的认证文件.(3)建立虚拟用户访问所需要的目录并且设定相应的访问权限.(4)建立配置文件.(5)重新启动vsftpd服务器.安装完之后我们要对它进行配置,才

腾讯云服务器linux centOS7.4 搭建ftp服务器 vsftpd

腾讯云服务器linux centos 7.4 搭建ftp服务器 vsftpd # 安装 vsftpd $ yum install vsftpd -y # 启动 $ service vsftpd start && systemctl restart vsftpd.service # 查看 $ netstat -nltp | grep 21 /*目前 FTP 服务登陆允许匿名登陆,也无法区分用户访问,我们需要配置 FTP 访问权限vsftpd 的配置目录为 /etc/vsftpd,包含下列的配

Ubuntu 14.04 FTP服务器--vsftpd的安装和配置

http://jingyan.baidu.com/article/67508eb4d6c4fd9ccb1ce470.html Ubuntu 14.04 FTP服务器--vsftpd的安装和配置 我们经常需要将本地的文件上传到远程的Ubuntu 14.04服务器上,或者把远程Ubuntu 14.04服务器上的文件下载到本地,这就需要用到vsftpd来搭建FTP服务,现在介绍一下如何在Ubuntu 14.04上安装和配置vsftpd 工具/原料 Ubuntu 14.04 WinSCP 5.5.4 方

Linux系统下FTP服务器的配置

FTP服务器的配置   一FTP服务器的安装 1)ftp服务器安装后生成的相关文件 /etc/logrotate.d/vsftpd  #实现日志滚动的程序 /etc/pam.d/vsftpd  #用户认证配置文件 /etc/rc.d/init.d/vsftpd  #服务脚本 /etc/vsftpd #配置文件所在目录 /etc/vsftpd/ftpusers  #控制哪些用户是否可登陆ftp /etc/vsftpd/user_list  #控制哪些用户是否可登陆ftp /etc/vsftpd/v

CentOS 7.1云服务器 配置FTP服务器vsftpd

在root权限下,通过如下命令安装Vsftp: yum install vsftpd 使用rpm命令即可查看是否已经安装vsftpd: rpm -qa|grep vsftpd 在启动vsftpd服务之前,需要登录云服务器修改配置文件,将匿名登录禁用掉. 1.打开配置文件,命令如下: vim /etc/vsftpd/vsftpd.conf 在配置文件中第11行的“anonymous_enable=YES”改为“anonymous_enable=NO”,即将匿名登录禁用. X按钮为VIM中的退格,修

centos 6.5 搭建ftp 服务器(vsftpd的配置文件说明)

0x00 如何快速的搭建简易的资源发布站 开启简易的python http服务器 1 2 cd /home/your_path python -m SimpleHTTPServer 8000 开启防火墙的对应端口 1 vim /etc/sysconfig/iptables 增加对应的端口就好 0x01 知识储备 FTP通道解释 FTP包含了两个通道,一个叫控制通道,一个叫数据通道: 控制通道:控制通道是和FTP服务器进行沟通的通道,连接FTP,发送FTP指令都是通过控制通道来完成的. 数据通道:

linux下搭建ftp服务器(转载)

vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序.特点是小巧轻快,安全易用.并且是一个完全免费开放源码的ftp软件 工具/原料 CentOS6.4 方法/步骤 1 用在线安装 yum install vsftpd pam* db4*-y 使用命令将vsftp配置为系统服务 chkconfig --level 35 vsftpd on 2 配置vsftpd服务的宿主 useradd vsftpdadmin -s /sbin/nologin -M 这个vsftpdadmin只是用来替

在CentOS7上安装ftp服务器用于保存服务端上传的图片。

1.CentOS卸载vsftpd的方法 如果服务器上已经安装了vsftpd服务,配置出错需要卸载vsftpd服务. 1.1 查找vsftpd服务 [[email protected] /]# rpm -aq vsftpd 返回结果显示: vsftpd-3.0.2-21.el7.x86_64 #此处是查找vsftpd的返回结果 表示此服务期之前已经安装过vsftpd服务. 1.2 删除查找到的vsftpd服务 注:在卸载vsftpd之前,先停止vsftpd [[email protected] /

Ubuntu 下ftp服务器的安装配置

Ubuntu 下ftp服务器的安装配置 FTP服务器是平时应用最为广泛的服务之一.VSFTP是Very Secure FTP的缩写,意指非常安全的FTP服务.VSFTP功能强大,通过结合本地系统的用户认证模块及其多功能的配置项目,可以快速有效的搭建强大的多用户FTP服务. 首先我们考虑搭建FTP服务需要关注的都有哪些方面?比如我们最经常关注的有: 1.如何添加FTP用户?  2.如何临时冻结某FTP用户?  3.FTP用户登入后的默认目录?是否可以改变?  4.如何锁定FTP用户可访问的目录范围