Centos中的FTP,在Linux系统中FTP服务器的服务不并是叫做ftp,而是叫做vsftpd。vsftpd全称(very secure FTP daemon)是一款在Linux系统中最受欢迎的FTP服务器,通过在Linux系统中安装和配置vsftpd来实现文件的共享。
vsftpd支持匿名访问和本地用户模式两种访问方式。匿名访问方式任何用户都可以访问搭建的FTP服务;本地用户模式只支持添加的本地用户访问搭建的FTP服务。但是匿名用户模式和本地用户模式只可同时配置一种。
【vsftpd的安装】
1、安装和卸载vsftpd服务
安装vsftpd服务
yum install -y vsftpd
卸载vsftpd服务
yum remove -y vsftpd
2、开启、重启服务
将vsftpd设为开机自启
systemctl enable vsftpd.service
启动vsftpd
systemctl start vsftpd.service
重启服务
systemctl restart vsftpd.service
3、端口和服务状态
查看监听端口
netstat -antup | grep ftp
出现:tcp6 0 0 :::21 :::* LISTEN 27712/vsftpd,表示FTP服务已经启动了,监听的端口号为 21。
查看vsftpd服务状态
service vsftpd status
4、关闭防火墙
systemctl stop firewalld
setenfource 0
【vsftpd本地模式搭建】
1、创建本地用户并创建用户专属目录并限制用户登录
useradd -d /ftp/ -s /sbin/nologin pop
设置用户pop的密码:
passwd pop
2、修改配置文件
vim /etc/vsftpd/vsftpd.conf
取消下面三个选项前的 # 注释,显示白色即可
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
3、创建目录和修改权限
chown -R pop:pop /ftp/
删除FTP文件目录
rm -rf /ftp/
4、重启服务
systemctl restart vsftpd.service
5、页面访问
通过 ftp://ip地址 访问,输入用户名和密码,就可以看到一个ftp就搭建完成了。
================================================
【其他常见相关问题】
1、出现文件和主目录已经存在的错误,需要找到信箱文件夹名称的信箱文件删除,如
find / -name "*pop"
rm -rf /var/spool/mail/pop
2、出现用户已存在
userdel pop #删除pop用户
3、登录出现500 OOPS:cannot change directory
检查目录包括目标目录和各级目录用户是否都具有权限,可以尝试开启“allow_writeable_chroot”选项
echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf
echo "local_root=/ftp" >> /etc/vsftpd/vsftpd.conf
或者添加例外用户名单
vim /etc/vsftpd/chroot_list #使用vim命令编辑chroot_list文件,添加例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。
说明: 没有例外用户时,也必须创建chroot_list文件,内容可为空。
5、登录出现530 Login incorrect
vim /etc/shells #检查有没有/sbin/nologin
6、常用vsftpd.conf修改配置文件命令
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器
sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets
sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录
sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单
sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录
echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录
echo "pasv_enable=YES" >> /etc/vsftpd/vsftpd.conf #开启被动模式
echo "pasv_address=<111.88.88.88>" >> /etc/vsftpd/vsftpd.conf #本教程中为ECS服务器弹性IP
echo "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最小值
echo "pasv_max_port=21" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最大值
6、修改FTP服务的端口号
echo "listen_port=2121" >> /etc/vsftpd/vsftpd.conf #添加FTP服务器的端口号为2121
#修改FTP服务TCP和UDP的端口号
vim /etc/services
#修改ftp 21/tcp为ftp 10021/tcp、ftp 21/udp为ftp 22/udp
ftp 2121/ftp
ftp 2121/udp
按 i 键进入编辑模式,再按Esc退出编辑模式,输入 :wq 命令进行保存
================================================
【vsftp匿名模式搭建】
1、修改配置文件
vim /etc/vsftpd/vsftpd.conf
按 i 键进入编辑模式,将匿名上传权限 anon_upload_enable=YES 的注释解开
再按Esc退出编辑模式,输入 :wq 命令进行保存
2、修改权限
修改权限为其他用户可写入
chmod o+w /var/ftp/pub/
3、重启服务
重新启动vsftpd,使配置生效。
systemctl restart vsftpd.service
此时,vsftpd默认已开启匿名访问功能,就是无需输入用户名密码即可登录FTP服务器,但是没有修改或上传文件的权限。
基于CentOS的FTP服务器搭建
https://blog.csdn.net/weixin_45403773/article/details/123718734
linux centos下搭建ftp实现指定用户访问指定目录
https://blog.csdn.net/pyy542718473/article/details/122193764