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.conf
中userlist_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.相关问题
- 在用户主目录上传文件? ;
- 500 OOPS: vsftpd: refusing to run with writable root inside chroot()错误解决? ;
500 OOPS: cannot change directory:/home/inspur/ftp
错误,解决方式:sudo setsebool -P tftp_home_dir on
- Java FTP客户端上传文件大小为0?设置FTP被动模式
ftpClient.enterLocalPassiveMode()
。
参考文章:
- 第二十一章、檔案伺服器之三: FTP 伺服器;
- Boolean ftp_home_dir is not defined;
- “Boolean ftp_home_dir not defined” CentOS 7 error;
- FTP上传、不报错、但文件上传不上去;
最新评论
黑镜4k被和谐,哥
地址已经无效
谢谢,大神的分享
你们都能正常用吗?我怎么不能呀,没有几个能放