1.安装vsftpd
rpm -qa vsftpd || yum -y install vsftpd #检查是否有安装vsftpd,如果没有使用yum安装
2.配置用户
mkdir /ftp #创建一个用于存储ftp数据的目录
useradd -d /ftp -u ftpuser ftpuser -s /bin/bash #创建一个ftp用户
echo "password" | passwd --stdin ftpuser #为ftp用户设置一个系统密码为password
3.编辑配置文件
vim /etc/vsftpd/vsftpd.conf #vsftpd的主配置文件
local_umask=000 #本地用户文件上传后的权限是777 这里为了方便其他人也能对文件进行修改所以给的是777权限
local_enable=YES` #允许系统用户名登录
chroot_local_user=YES` #是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)
ascii_upload_enable=YES
ascii_download_enable=YES
allow_writeable_chroot=YES
默认情况下服务器会假装接受ASCⅡ模式请求但实际上是忽略这样的请求,启用上述的两个选项可以让服务器真正实现ASCⅡ模式的传输。
注意:启用ascii_download_enable选项会让恶意远程用户们在ASCⅡ模式下“SIZE/big/file”这样的指令大量消耗FTP服务器的I/O资源。
这些ASCⅡ模式的设置选项分成上传和下载两个,这样我们就可以允许ASCⅡ模式的上传(可以防止上传脚本等恶意文件而导致崩溃),而不会遭受拒绝服务攻击的危险。
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误,所以就需要在配置文件中加入这个选项
修改完之后保存配置
centos6
service vsftpd start|stop|restart
#进行管理
centos7
systemctl start|stop|restart vsftpd
设置开机自启
system enable vsftpd
常用配置选项
pasv_enable=no #关闭被动模式
connect_from_port_20=YES #默认情况下ftp port主动模式使用20进行数据传输 (NO不使用)
anonymous_enable=NO #禁止匿名用户登陆,默认是允许的
anon_mkdir_write_enable=YES #允许匿名用户 创建新的目录
anon_other_write_enable=YES #允许匿名用户改名和删除文件
pasv_min_port=30000 #被动模式进行数据传输的起始端口
pasv_min_port=40000 #被动模式进行数据传输的终止端口
FTP使用常见问题
当上传的文件是一个包含中文的文件时,会出现下面这种报错,我们可以创建一个文件夹包含这个文件就可以了
原因:
ftp协议中有些扩展字符是保留字,而有些中文字符就可能是保留字(有些中文没事),于是出现问题。尽量不要以中文的方式进行命名。