注意:
1. 删除已安装的vsftpd,在对应目录下输入:yum remove vsftpd;
2. 如果是普通用户登录linux,在命令前加上"sudo",可以提升权限;
- 安装vsftpd
yum -y install vsftpd
此为下载安装过程结尾部分截图:
- 根目录创建新文件夹
mkdir ftpfile
- 增加一个用户,权限限制为只能访问ftpfile目录并且没有登录权限。
useradd ftpuser -d /ftpfile/ -s /sbin/nologin
- 将ftpfile的拥有者改为ftpuser
chown -R ftpuser.ftpuser /ftpfile/
- 设置tfpuser的密码
passwd ftpuser
-
切换到ftpfile目录下,创建文件index.html
-
配置ftp服务器
修改或新增以下属性:
- anonymous_enable=NO —— 是否允许匿名ftp,如否则选择NO
- local_enable=YES —— 是否允许本地用户登录
- write_enable=YES —— 是否允许登陆用户有写权限。属于全局设置,默认值为YES。
- local_umask=022 —— 默认的umask码
- dirmessage_enable=YES —— 如果启动这个选项,那么使用者第一次进入一个目录时,会检查该目录下是否有.message这个档案,如果有,则会出现此档案的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。默认值为开启。
- xferlog_enable=YES —— 是否启用上传/下载日志记录。如果启用,则上传与下载的信息将被完整纪录在xferlog_file 所定义的档案中。预设为开启。
- connect_from_port_20=YES —— 指定FTP使用20端口进行数据传输,默认值为YES。
- xferlog_std_format=YES —— 如果启用,则日志文件将会写成xferlog的标准格式,如同wu-ftpd 一般。默认值为关闭。
- ftpd_banner=Welcome to ambermall FTP service. —— 这里用来定义欢迎话语的字符串,banner_file是档案的形式,而ftpd_banner 则是字符串的形式。预设为无。
- local_root=/ftpfile —— 当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。
- chroot_local_user=YES —— 用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。
通过搭配能实现以下几种效果:
①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
③当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
④当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。 - use_localtime=yes —— 使用本机时间
- chroot_list_enable=YES —— 设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
- chroot_list_file=/etc/vsftpd/chroot_list —— 用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。
- listen=YES —— 设置vsftpd服务器是否以standalone模式运行。以standalone模式运行是一种较好的方式,此时listen必须设置为YES,此为默认值。建议不要更改,有很多与服务器运行相关的配置命令,需要在此模式下才有效。若设置为NO,则vsftpd不是以独立的服务运行,要受到xinetd服务的管控,功能上会受到限制。
- pam_service_name=vsftpd —— 设置PAM使用的名称,默认值为/etc/pam.d/vsftpd。
- userlist_enable=YES —— 是否启用vsftpd.user_list文件。
- tcp_wrappers=YES —— 设置vsftpd是否与tcp wrapper相结合来进行主机的访问控制。默认值为YES。如果启用,则vsftpd服务器会检查/etc/hosts.allow 和/etc/hosts.deny 中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。这两个文件可以起到简易的防火墙功能。
比如:若要仅允许192.168.0.1—192.168.0.254的用户可以连接FTP服务器,则在/etc/hosts.allow文件中添加以下内容:
vsftpd:192.168.0. :allow
all:all :deny - pasv_min_port=61001 —— 在PASV工作模式下,数据连接可以使用的端口范围的最小端口,0 表示任意端口。默认值为0。
- pasv_max_port=62000 —— 在PASV工作模式下,数据连接可以使用的端口范围的最大端口,0 表示任意端口。默认值为0。
更加详细配置解释,请参考: vsftpd配置文件详解 - 配置完毕后,保存并关闭。创建chroot_list_file=/etc/vsftpd/chroot_list 指定的chroot_list 文件。
vim /etc/vsftpd/chroot_list
添加我们刚才创建的用户名称:
- 重启ftp服务器
service vsftpd restart
- 网络防火墙配置
vim /etc/sysconfig/iptables
#vsftpd
-A INPUT -p TCP --dport 61001:62000 -j ACCEPT
-A OUTPUT -p TCP --dport 61001:62000 -j ACCEPT
-A INPUT -p TCP --dport 20 -j ACCEPT
-A OUTPUT -p TCP --dport 20 -j ACCEPT
-A INPUT -p TCP --dport 21 -j ACCEPT
-A OUTPUT -p TCP --dport 21 -j ACCEPT
重启防火墙
service iptables restart
-
在linux里使用ftp客户端:
- 安装ftp
yum -y install ftp
- 连接ftp服务器
ftp ip地址 例如:ftp 192.168.1.5
- 输入用户mingcheng和密码,登录成功
-
输入dir查看文件
细心的小伙伴,可能发现了最后出现but failed to open directory。这该怎么解决呢?
* vim /etc/selinux/config
* 修改SELINUX为disable,保存并关闭
* 输入【setenforce 0】生效
* service vsftpd restart
这回再登录就没问题了:
-
浏览器里试试
- vsftpd的vsftpd.conf文件我设置了chroot_local_user=YES和chroot_list_enable=YES。这代表:在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
下面切换到上一级试试:
不过这样做太危险了,所以还是把chroot_local_user改成No吧:
先退出客户端:
vim /etc/vsftpd/vsftpd.conf