【E20200102-1】centos 7 下vsftp的安装和配置

一、准备工作

1.1、服务器准备

  • 操作系统:centos 7.x
  • 关闭防火墙(firewall/iptables)和SELinux

    参见笔记《【E20200101-1】Centos 7.x 关闭防火墙(firewall)和SELinux》

  • 更新服务器(不含内核)
# yum --exclude=kernel* update
  • 安装好用的文本工具(nano)
# yum -y install nano

1.2、理解“Port模式(主动模式)和Pasv模式(被动模式)”的概念

Port模式(主动模式):

当FTP服务器配置的是Port模式:那么【客户端C】会在登入【服务端S】后发送一条命令告诉【服务端S】(“客户端C”在本地打开了一个端口N在等着“服务端S”进行数据连接),当【服务端S】收到【客户端C】发来的信息后 就会向【客户端C】打开的端口N进行连接,并通过端口N提供数据服务。

Pasv模式(被动模式):

当FTP服务器配置的是Pasv模式,那么【客户端C】会在登入【服务端S】后【服务端S】会发信息给【客户端C】(“服务端S”在服务器上打开了一个端口M在等着“客户端C”进行数据连接),当【客户端C】收到【服务端S】发来的信息后,就会向【服务端S】打开的端口M进行连接,并通过端口N提供数据服务。

二、安装vsftp

2.1、yum安装vsftp

yum -y install vsftpd

2.2、启动服务

systemctl start vsftpd.service

三、配置vsftp

3.1、修改配置文件

配置文件路径

/etc/vsftpd

备份一份配置文件

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak 

使用nano文本编辑器修改配置文件

# nano /etc/vsftpd/vsftpd.conf

使用一下内容替换原有配置文件

anonymous_enable=NO
write_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
use_localtime=YES
local_enable=YES
allow_writeable_chroot=YES
xferlog_enable=YES
local_umask=022
pam_service_name=vsftpd
 
use_localtime=YES
listen_port=21
chroot_local_user=YES
idle_session_timeout=120
 
data_connection_timeout=120
#guest_enable=YES
#guest_username=wordpress
 
user_config_dir=/etc/vsftpd/vuser_conf
virtual_use_local_privs=YES

#pasv_enable=YES 
pasv_min_port=10060
pasv_max_port=10065
 
accept_timeout=5
connect_timeout=1

创建宿主用户

//创建ftpuser用户并添加到ftp组
# useradd -g ftp -M -d /data/vsftpd -s /sbin/nologin ftpuser
//设置用户 ftpuser 的密码
# passwd ftpuser
//把 /data/vsftpd 的所有权给ftpuser账号和ftp组
# chown -R ftpuser:ftp /data/vsftpd

使用nano文本编辑器创建虚拟用户文件

# nano /etc/vsftpd/vuser_passwd
# 编辑虚拟用户名单文件内容;
# 第一行账号,第二行密码;
#注意:不能使用系统保留的用户名,例如root
ftp1
12345678
ftp2
12345678

生成虚拟用户数据文件

db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
chmod 600 /etc/vsftpd/vuser_passwd.db

四、测试vsftp

*net use /d 清除ftp连接缓存**

附件一:vsftpd.conf配置文件详解

########匿名用户(anonymous)设置#############
#匿名用户使用的登陆名为ftp或anonymous,口令为空;
#匿名用户不能离开匿名用户家目录,且只能下载不能上传;

#控制是否允许匿名用户登入,YES 为允许匿名登入,NO 为不允许。默认值为YES。
#anonymous_enable=YES/NO(YES)
anonymous_enable=NO

#若是启动这项功能,则使用匿名登入时,不会询问密码。默认值为NO。
#no_anon_password=YES/NO(NO)
#no_anon_password=NO

#定义匿名登入的使用者名称。默认值为ftp。
#ftp_username=ftp

##使用匿名登入时,所登入的目录。默认值为/var/ftp。
#注意ftp目录不能是777的权限属性,即匿名用户的家目录不能有777的权限。
#anon_root= /var/ftp

#如果设为YES,则允许匿名登入者有上传文件(非目录)的权限;
#只有全局的write_enable=YES(默认YES)时,此项才有效;
#当然,匿名用户必须要有对上层目录的写入权。默认值为NO;
#anon_upload_enable=YES 

#如果设为YES,则允许匿名登入者下载可阅读的档案;
#可以下载到本机阅读,不能直接在FTP服务器中打开阅读;
#anon_world_readable_only=YES/NO(YES)默认值为YES;
#anon_world_readable_only=YES

#如果设为YES,则允许匿名登入者有新增目录的权限
#只有全局的write_enable=YES(默认YES)时,此项才有效;
#当然,匿名用户必须要有对上层目录的写入权。
#anon_mkdir_write_enable=YES/NO(NO)默认值为NO。
#anon_mkdir_write_enable=NO  

#如果设为YES,则允许匿名登入者拥有上传或者建立目录之外的权限,譬如删除或者重命名。
#如果anon_upload_enable=NO,则匿名用户不能上传文件,但可以删除或者重命名已经存在的文件;
#如果anon_mkdir_write_enable=NO,则匿名用户不能上传或者新建文件夹,但可以删除或者重命名已经存在的文件夹。
#anon_other_write_enable=YES/NO(NO)默认值为NO。
#anon_other_write_enable=NO

#设置是否改变匿名用户上传文件(非目录)的属主;
#chown_uploads=YES/NO(NO)默认值为NO;
#chown_uploads=NO

#设置匿名用户上传文件(非目录)的所有者账号名称;
#建议不要设置为root;
#chown_username=username

#设置匿名登入者新增或上传档案时的 umask (匿名用户的掩码)值;
#如umask是022,这时创建一个权限为666的文件,文件的实际权限为666-022=644
#默认值为077 对应新建档案的对应权限为700;
#anon_umask=077

#若是启动这项功能,则必须提供一个档案/etc/vsftpd/banner_emails,内容为email address。
#若是使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不允许进入。
#deny_email_enable=YES/NO(NO)默认值为NO。
#deny_email_enable=NO

#此文件用来输入email address;
#只有在deny_email_enable=YES时,才会使用到此档案。
#若是使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不允许进入。
#banned_email_file=/etc/vsftpd/banner_emails

############本地用户设置#############
#本地用户的登录名为本地用户名,口令为此本地用户的口令;
#本地用户可以在自己家目录中进行读写操作;
#本地用户可以离开自家目录切换至有权限访问的其他目录,并在权限允许的情况下进行上传/下载。
#写在文件/etc/vsftpd/ftpusers中的本地用户禁止登陆。

#控制是否允许本地用户登入,YES 为允许本地用户登入,NO为不允许;
#local_enable=YES/NO(YES)默认值为YES;
local_enable=YES

#当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。
#local_root=/home/username

#设置本地用户登入者新增或上传档案时的 umask (匿名用户的掩码)值;
#如umask是022,这时创建一个权限为666的文件,文件的实际权限为666-022=644
#默认值为077 对应新建档案的对应权限为700;
local_umask=022

#本地用户上传档案后的档案权限,与chmod所使用的数值相同。默认值为0666。
#file_open_mode=0755



#############虚拟用户配置###########3
#虚拟用户使用PAM认证方式。
#设置PAM使用的名称,默认值为/etc/pam.d/vsftpd。
pam_service_name=vsftpd

#启用虚拟用户;
#guest_enable= YES/NO(NO)默认值为NO。
#guest_enable=YES

#这里用来映射虚拟用户。默认值为ftp。
#guest_username=wordpress

#当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限;
#当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。
#virtual_use_local_privs=YES/NO(NO)默认情况下此参数是关闭的(NO)。
virtual_use_local_privs=YES




use_localtime=YES
listen_port=21
chroot_local_user=YES
idle_session_timeout=120
 
data_connection_timeout=120





#设置虚拟用户账户文件的主目录文件夹地址
user_config_dir=/etc/vsftpd/vuser_conf



#pasv_enable=YES 
pasv_min_port=10060
pasv_max_port=10065
 
accept_timeout=5
connect_timeout=1


#是否允许登陆用户有写权限。属于全局设置,默认值为YES;
#write_enable=YES/NO(YES)默认值为YES;
write_enable=YES

#是否将所有用户限制在主目录,YES为启用 NO禁用;
#在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的;
#chroot_local_user=YES/NO (NO) 默认值为NO;
chroot_local_user=YES

##用于指定用户列表文件中的用户不允许切换到上级目录;
#chroot_list_enable=YES/NO (NO) 默认值为NO;
chroot_list_enable=YES

#是否限制在“主目录”下的用户名单文件地址;
#当chroot_list_enable=YES(默认值为NO)时生效;
#至于是“限制名单”还是“排除名单”,这取决于chroot_local_user的值;
#当chroot_local_user=YES时,该文件里的用户作为“例外”不做限制;
#当chroot_local_user=NO时,该文件里的用户作为“例外”受到限制;
chroot_list_file=/etc/vsftpd/chroot_list



use_localtime=YES
allow_writeable_chroot=YES
xferlog_enable=YES

猜你喜欢

转载自www.cnblogs.com/eword/p/E20200102-1.html