CENTOS7下配置vsftpd

centos7 下配置ftp很简单,但要跟nginx开启的服务路径存在交叉的时候,坑还是不少啊!

本文将详细记录在centos7 最小化安装的系统中,从0配置ftp的步骤以及坑点。

配置ftp文件上传

安装vsftp

参考CentOS7下安装FTP服务

安装、编辑配置文件:

#安装vsftpd
[root@nooldey]# yum -y install vsftpd
#配置vsftpd
[root@nooldey]# vi /etc/vsftpd/vsftpd.conf

修改配置如下(放开匿名登录,去掉#):

anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

以上修改的三行配置(#修改内容(去掉#):紧接的三行),是用于匿名登录和上传、新建文件夹的测试,在本文【测试ftp】环节测试完毕后,应重新注释掉以上三行配置。

启动ftp并检查状态

#启动ftp
[root@nooldey]# service vsftpd start
#查看状态
[root@nooldey]# service vsftpd status
#设置开机启动
[root@nooldey]# systemctl enable vsftpd.service

测试ftp连接

匿名用户账号密码均为anonymous

[root@nooldey]# yum -y install ftp
[root@nooldey]# ftp localhost

返回码220则服务正常,可以登录;230则为登录成功。
centos-node8

配置vsftpd

a.vsftpd设置。

打开并编辑配置conf:

[root@nooldey]# vi /etc/vsftpd/vsftpd.conf

将其他内容全部注释掉或删除(注意备份一份默认配置),在文件最后追加以下完整配置(列表中未列出的行则注释开即可,配置内容随实际使用情况会不定期进行更改):

#禁止匿名
anonymous_enable=NO
#本地用户可访问
local_enable=YES
#允许任何形式的ftp写入
write_enable=YES
#文件创建的权限只有755
local_umask=022
#激活目录消息(当用户进入目录时提示他们)
dirmessage_enable=YES
#激活上传/下载的日志记录
xferlog_enable=YES
#确保端口传输来自端口20
connect_from_port_20=YES
#使用标准格式的日志文件
xferlog_std_format=YES
#超时空闲会话
#idle_session_timeout=600
#支持ASCII模式上传下载
#ascii_upload_enable=YES
#ascii_download_enable=YES
#将用户限制在主目录(即限制访问主目录外的上级目录)
chroot_local_user=YES
#启动限制用户名单(/etc/vsftpd/chroot_list限制在主目录下的名单,为YES时这些用户是例外,不受限制,反之则受限制)
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#监听ipv4连接,而忽略ipv6连接
listen=NO
#监听ipv6连接,而忽略ipv4连接
listen_ipv6=YES
#PAM 服务名称,这里的设置决定PAM将为vsftpd使用配置文件
pam_service_name=vsftpd
userlist_enable=YES
#local_root=/home/nooldey
tcp_wrappers=YES
#自定义添加的内容
#use_localtime=YES
#支持虚拟用户
#guest_enable=YES
#guest_username=nooldey
#配置用户目录
#user_config_dir=/etc/vsftpd/vuser_conf
#允许FTP用户写入权限
allow_writeable_chroot=YES
#使用完全孤立无特权的用户
#nopriv_user=nooldey
#开启pasv被动模式
#pasv_enable=YES
#pasv_min_port=6000
#pasv_max_port=7000
#这个是用于检测pasv的安全检查,YES为关闭安全检查
#pasv_promiscuous=YES

b.新建ftp用户

新建ftp登录用户:

#创建宿主用户目录
[root@nooldey]# mkdir -p /var/www/ROOT
#创建宿主用户
[root@nooldey]# useradd ftpuser -s /sbin/nologin -d /var/www/ROOT
[root@nooldey]# passwd ftpuser
#设置目录所属以及权限
[root@nooldey]# chown -R ftpuser.root /var/www/ROOT
[root@nooldey]# chmod -R 755 /var/www/ROOT

注意:如果vsftpd.conf配置中开启了userlist_deny=YES,即只允许userlist中的账户登录ftp,需要在user_list中添加新增的ftpuser用户

重启vsftpd:

[root@nooldey]# service vsftpd restart

c.检查SELinux的ftp开关

在外网(windows环境)用filezilla连接上述搭建的ftp,连接成功,上传文件,出现553 Could not create file错误,无法上传文件!!!我的天,怎么办?

别慌,出现上传错误,是因为服务器端的ftp没有开启上传写入文件的权限,这就把它解决掉!

#检查ftp权限SELinux设置
[root@nooldey]# getsebool -a|grep ftp

检查配置是否如下:

ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> on
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> on

如果配置与上述有出入,确保开启full_access和tftp_home_dir

[root@nooldey]# setsebool -P ftpd_full_access 1
[root@nooldey]# setsebool -P tftp_home_dir 1

d.可能用到的指令

userdel -rf nooldey:强制删除用户及相关目录文件;
ls –l /home:查看所有系统用户,列出系统中所有的用户;
vi /etc/passwd:查看所有账号,列出所有账户密码。
find / -name '*nooldey*': 查找匹配信息

至此,ftp配置完成,终于成功上传了文件,并且将用户限制在自己的目录下了。

NOOLDEY

本文作者:NOOLDEY

做一个诗情画意的码农,皮皮猪,我们走!

原文链接: http://zhuweisheng.com.cn/tech/centos-vsftpd/

本站文章如无特殊声明均为原创,创作不易,转载请注明来源,谢谢!