Welcome to my website, have a nice day!
Dream it, Do it, Make it!

CENTOS搭建FTP服务器(vsftpd安装及配置)

ftp.jpg

1.环境

  • CentOS Linux release 7.6.1810 (Core);
  • vsftpd: version 3.0.2;

2.安装 vsftpd

root@ssr ~]# yum install -y vsftpd 

3.启动 vsftpd

[root@ssr ~]# systemctl start vsftpd

启动后,可以看到系统已经监听了 21 端口:

[root@ssr ~]# netstat -nltp | grep 21
tcp6       0      0 :::21                   :::*                    LISTEN      20336/vsftpd        

此时,访问 ftp://your_ip_address 可浏览机器上的/var/ftp目录了。

4.创建用户

4.1 创建用户并禁止远程登录服务器

1.创建用户

useradd -d /home/lgzrftp -g ftp -s /sbin/nologin lgzrftp

2.修改密码

passwd lgzrftp

5.相关配置

5.1 配置文件

vsftpd 的配置目录为/etc/vsftpd,包含下列的配置文件:

[root@ssr ~]# ll /etc/vsftpd
total 20
-rw-------. 1 root root  125 Aug  3  2017 ftpusers
-rw-------. 1 root root  361 Aug  3  2017 user_list
-rw-------. 1 root root 5030 Aug  3  2017 vsftpd.conf
-rwxr--r--. 1 root root  338 Aug  3  2017 vsftpd_conf_migrate.sh

其中:

  • ftpusers

此文件中的用户不允许进行FTP登录;

  • user_list

作用根据vsftpd.confuserlist_deny={YES/NO}配置而定,如果配置userlist_deny=NO,则只允许此文件中的用户;如果userlist_deny=YES(默认值),不允许此文件中的用户登录,甚至都不会要求提供密码就直接拒绝;当然也会综合/etc/vsftpd/ftpusers配置来决定是否能够登录。

5.2 进行配置

修改/etc/vsftpd/vsftpd.conf文件进行配置。

1.禁止匿名访问

修改为下面设定值:

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO

2.将使用者限制在自己的根目录

为了安全,修改配置文件/etc/vsftpd/vsftpd.conf,修改为下面设置值:

chroot_local_user=YES 

3.允许主目录上传文件

编辑/etc/vsftpd/vsftpd.conf,增加一行:

allow_writeable_chroot=YES

编辑完成后保存配置,重新启动FTP服务。

[root@ssr ~]# systemctl restart vsftpd

4.测试登录

此时进行ftp登录,命令行提示:

C:\Users\Michael>ftp 68.183.26.48
连接到 68.183.26.48。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(68.183.26.48:(none)): lgzrftp
331 Please specify the password.
密码:
530 Login incorrect.
登录失败。
ftp> bye
221 Goodbye.

解决方式详见:CENTOS搭建FTP服务器530 Login incorrect错误解决

我的配置:

[inspur@localhost sqls]$ sudo cat /etc/vsftpd/vsftpd.conf|grep -v ^#|grep -v ^$
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=YES
tcp_wrappers=YES
pasv_min_port=3000 (设置被动模式的端口范围)
pasv_max_port=3010 (设置被动模式的端口范围)
allow_writeable_chroot=YES

6.重新访问FTP

现在再次访问FTP地址:ftp://your_ip_address就必须通过FTP用户及密码才能访问了。

7.相关问题

  1. 在用户主目录上传文件?
  2. 500 OOPS: vsftpd: refusing to run with writable root inside chroot()错误解决?
  3. 500 OOPS: cannot change directory:/home/inspur/ftp错误,解决方式:sudo setsebool -P tftp_home_dir on
  4. Java FTP客户端上传文件大小为0?设置FTP被动模式ftpClient.enterLocalPassiveMode()

参考文章:

  1. 第二十一章、檔案伺服器之三: FTP 伺服器
  2. Boolean ftp_home_dir is not defined
  3. “Boolean ftp_home_dir not defined” CentOS 7 error
  4. FTP上传、不报错、但文件上传不上去
赞(1)
未经允许禁止转载:Ddmit » CENTOS搭建FTP服务器(vsftpd安装及配置)

评论 抢沙发

登录

找回密码

注册