CentOS利用vsftpd搭建FTP服务器并实现指定用户访问指定目录

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

Related Posts