在开始之前先开启服务器20、21端口,关闭SELinux,然后重启服务器
# 加20、21端口
firewall-cmd --permanent --add-port=20/tcp
firewall-cmd --permanent --add-port=21/tcp
# 重启防火墙
firewall-cmd --reload
# 查看哪些端口开启
firewall-cmd --list-port
# 查看SELinux(重启服务器生效)
vim /etc/selinux/config
SELINUX=enforcing 改为 SELINUX=disabled
#重启服务器
shutdown -r now
1.安装vsftp
yum install -y vsftpd
2.设置 vsftpd 开机自启动
systemctl enable vsftpd
3.启动ftp
service vsftpd start
4.查询ftp是否启动
netstat -antup | grep ftp
结果展示:
tcp6 0 0 :::21 :::* LISTEN 17011/vsftpd
5.创建用户并绑定目录和登陆权限(后面要改用户默认目录记得修改权限chmod 755 文件夹名称)
useradd johnny -d /var/ftp/files -s /bin/nologin
6.设置用户密码
passwd johnny
7.备份并配置文件
cd /etc/vsftpd/
cp vsftpd.conf vsftpd.conf.bak
vim vsftpd.conf
8.配置文件参数,如下
# Example config file /etc/vsftpd/vsftpd.conf
#监听端口号
listen_port=21
#设定端口20进行数据连接。
connect_from_port_20=YES
#不允许匿名访问
anonymous_enable=NO
#设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问
local_enable=YES
#设定可以进行写操作
write_enable=YES
# 文件权限=666(系统默认文件权限,8进制)-local_umask(权限掩码)=644(rw-r--r--)
# 目录权限=777(系统默认文件权限,8进制)-local_umask=755(rwxr-xr-x)
local_umask=022
#禁止匿名用户
anon_upload_enable=NO
anon_mkdir_write_enable=NO
#用户配置文件目录
user_config_dir=/etc/vsftpd/conf
#设定开启目录标语功能
dirmessage_enable=YES
#设定开启日志记录功能
xferlog_enable=YES
#设定禁止上传文件更改宿主
chown_uploads=NO
#设定Vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了Vsftpd的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败。
#xferlog_file=/opt/log/vsftpd/vsftpd.log
#设定日志使用标准的记录格式
xferlog_std_format=YES
#设定空闲连接超时时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值600,单位秒
#idle_session_timeout=600
#数据连接超时时间
#data_connection_timeout=120
#设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。
#nopriv_user=ftpsecure
#设定支持异步传输功能
async_abor_enable=YES
#设定支持ASCII模式的上传和下载功能
ascii_upload_enable=YES
ascii_download_enable=YES
#设定Vsftpd的登陆欢迎语
ftpd_banner=Welcome to FTP service.
#设定Vsftpd的登陆标语的文件
#Banner_file =/etc/vsftpd/banner
#允许chroot用户写入(cent 7需要添加)
allow_writeable_chroot=YES
#chroot_list文件目录
chroot_list_file=/etc/vsftpd/chroot_list
#条件1:chroot_list用户默认登录到系统根目录
chroot_list_enable=NO
#条件2:chroot_list之外用户默认登录到用户目录
chroot_local_user=YES
#条件1和条件2有4中组合,具体的内容可以去别的地方查看,这里的设置是所有用户登录都只能在其用户目录下
#例如我们前面创建的用户默人目录在/var/ftp/files这里,登录后的默认目录就在这
#设置本地用户登录后所在的目录
#local_root=/var/ftp/files
#禁止用户登陆FTP后使用"ls -R"的命令。该命令会对服务器性能造成巨大开销。如果该项被允许,那么挡多用户同时使用该命令时将会对该服务器造成威胁。
ls_recurse_enable=NO
#当为YES时,vsftpd将以单独模式运行.这意味着vsftpd不必以某种inetd运行,而是可以直接执行.vsftpd执行后会自己侦听和操作进入的连接
listen=YES
#类似listen选项,但该选项使vsftpd侦听的地址为IPv6格式的
listen_ipv6=NO
#设定,启用pam认证,并指定认证文件名/etc/pam.d/vsftpd
pam_service_name=/etc/pam.d/vsftpd
#是否启用user_list
userlist_enable=NO
#user_list文件路径
userlist_file=/etc/vsftpd/user_list
#user_list用户是(YES)否(NO)被拒绝,YES黑名单 NO白名单
userlist_deny=NO
#设定支持TCP Wrappers
tcp_wrappers=YES
# 若是启动这项功能,则必须提供一个档案/etc/vsftpd/banner_emails,内容为email address。若是使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不允许进入。默认值为NO。
#deny_email_enable=NO
# 此文件用来输入email address,只有在deny_email_enable=YES时,才会使用到此档案。若是使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不允许进入。
#banned_email_file=/etc/vsftpd/banned_emails
9. 因为前面创建的用户没有通过shell登录的授权,此处注释掉pam_shells.so参数
vim /etc/pam.d/vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
10. 重启ftp服务
service vsftpd restart
11. 登录ftp查看效果
(1) 命令行登录
ftp
open 你的ip地址
输入账号和密码
(2) 在我的电脑地址栏输入,根据提示输入账号密码
ftp://你的ip地址