首页 » Linux » vsftpd的安装配置

vsftpd的安装配置

 

KODExplorer(芒果云资源管理器)是一个公开源码的基于Web的在线文件管理、代码编辑器。支持markdown编辑。KODExplorer是一个公开源码的基于Web的在线文件管理、代码编辑器。

  • ftp的两种模式介绍(主动和被动)

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。vsftp默认是被动默式

 

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。vsftp默认是被动默式

  • 安装

yum install vsftpd –y

如果只开放21,和20端口,那么网页就访问不了。也就是主动模式。被动模式可以在网页上访问,主动模式只能通过命令行。

  • 配置

配置步骤:

1)、添加登录用户useradd xxx

2)、添加用户xxx到/etc/vsftpd/chroot_list里面

3)、访问目录属主要改:chown –R xxx:xxx /data,如果是家目录,那么是不需要的。

4)、配置配置文件 /etc/vsftpd/vsftpd.conf

5)、关闭防火墙,启动(/etc/init.d/vsftpd start)并测试登录。

 

 

配置目录:/etc/vsftpd

按下面的配置文件配置就可以,创建本地用户写入到配置文件chroot_list中

[root@centos6-7 vsftpd]# grep -Ev “#|^$” /etc/vsftpd/vsftpd.conf

anonymous_enable=NO #禁止匿名用户登录
local_enable=YES  #允许本地用户登录
write_enable=YES #允许写入权限,前提是你的登录用户对local_root目录有rwx权限才可以。
local_umask=022 #默认权限,777/666减掉umask就是你上传文件的权限
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES #开启主动模式,默认连接还是被动,如果你防火墙开启了,开放了20,21端口,这个也开启了,那么就会是被动模式连接,因为主动连不了,被拒了,开了防火墙这个一定要打开,因为被动模式下传输数据服务端的端口是随机的。
xferlog_std_format=YES
chroot_local_user=YES #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_list_file=/etc/vsftpd/chroot_list
local_root=/home/clc4  #ftp访问的目录,登录用户需要对目录有rwx权限才可以上传,不然可能只有只读或没有。
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
[root@centos6-7 vsftpd]#

 

[root@centos6-7 vsftpd]# grep -Ev "#|^$" /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list
local_root=/home/clc4
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

[root@centos6-7 vsftpd]# ls
chroot_list  user_list    vsftpd.conf.bak
ftpusers     vsftpd.conf  vsftpd_conf_migrate.sh
[root@centos6-7 vsftpd]#

 

 

需要登录的用户需要添加到chroot_list里面,不然登录不了。像ftpusers和user_list里的用户是不能登录的用户。

[root@centos6-7 vsftpd]# cat chroot_list

clc4

[root@centos6-7 vsftpd]#

VSFTP登录说明

 

 

以下问题可能会出现在3.0以上的版本上。

今天安装vsftp服务器,在修改了 chroot_local_user 属性以后,发现进行客户端访问的时候会报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()

到网上查了资料,得到解决问题方法如下:

“如果启用chroot,必须保证ftp根目录不可写,这样对于ftp根直接为网站根目录的用户不方便,所以建议假如ftp根目录是/home/${cjh},则将访问权限改写如下

chmod a-w /home/cjh

 

错误 :

1、我在centos7.2上配置的时候,需要把chroot_local_user=YES把yes必成no才可以登录,不然登录不了。

 

2、ipv6和ipv4的listen不能同时打开,同时打开,启动不了。

listen=YES
#
# This directive enables listening on IPv6 sockets. By default, listening
# on the IPv6 "any" address (::) will accept connections from both IPv6
# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
# sockets. If you want that (perhaps because you want to listen on specific
# addresses) then you must run two copies of vsftpd with two configuration
# files.
# Make sure, that one of the listen options is commented !!
listen_ipv6=YES #把这个注销,或者把这个设置为NO就可以了。

 

 

 

3、以下是在centos6下面的配置实践文件,访问目录是/data/www/vsftp目录

[root@host-192-168-8-192 vsftpd]# cat chroot_list 
vsftp
[root@host-192-168-8-192 vsftpd]# cat ftpusers 
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
[root@host-192-168-8-192 vsftpd]# cat 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@host-192-168-8-192 vsftpd]# grep -vE '^$|#' vsftpd
vsftpd.conf             vsftpd_conf_migrate.sh  
[root@host-192-168-8-192 vsftpd]# grep -vE '^$|#' vsftpd.conf 
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=000
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
local_root=/data/www/vsftp
listen=YES
listen_ipv6=no
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
You have mail in /var/spool/mail/root
[root@host-192-168-8-192 vsftpd]# 

===============================20201123===============================

1、环境是centos 7,yum install vsftpd

chroot_local_user=YES #表示启动chroot权限,也就是假设Ftp用户A只能访问根目录下的权限,不能访问系统/下其他目录
chroot_list_enable=NO #当上面启用的时候,这里也设置为YES,然后在下面的list_file中写入能访问除用户家目录权限外,其他目录,这样做相对不安全,因为能访问整个系统中有权限的目录和文件。
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list #写入特殊能访问的用户名,这个文件需要手动创建的

2、当访问的时候提示权限不够500错误的时候:allow_writeable_chroot=YES 设置这个就可以了。

3、当ftp用户创建是这样的:useradd -d /home/abc -s /sbin/nologin usera,用用户usera去登录的时候,报用户名和密码错误,需要把/etc/pam.d/vsftpd文件中的auth       required    pam_shells.so 这一行注释掉就可以,这样就相对比较安全一些,ftp用户就不能登录 ssh

4、以下是配置文件,访问的目录就是ftp用户的家目录。

anonymous_enable=no
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
pasv_min_port=2000
pasv_max_port=2500
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=NO
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=YES

 

 

 

原文链接:vsftpd的安装配置,转载请注明来源!

3