异想天开

What's the true meaning of light, Could you tell me why

vsftpd安装配置及使用

日期:2015-04-09 17:40:57
  
最后更新日期:2020-02-08 11:39:16
【技术】
一. 安装和配置
安装vsftpd,centos用户可以直接:
[code lang="cpp"]
yum install vsftpd.x86_64
[/code]
vsftpd代表Very Secure Ftp Daemon,使用上诉安装方式的配置文件默认在/etc/vsftpd/目录下。一般有如下几个配置文件: [code lang="cpp"]
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
[/code]
/etc/vsftpd/vsftpd.conf配置,星号标记的为重要配置:
[code lang="cpp"]
[root@localhost ~]# cat /etc/vsftpd/vsftpd.conf | grep -v '#'
#组织匿名登录 *
anonymous_enable=NO
local_enable=YES
#可写权限 *
write_enable=YES
#ftp本地文件的权限
local_umask=022
#切换目录时,显示目录下.message的内容
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
vsftpd_log_file=/var/log/vsftpd.log
data_connection_timeout=120
#是否针对用户chroot *
chroot_local_user=YES
#是否读取chroot_list_file文件 *
chroot_list_enable=YES
#若chroot_local_user为YES,则chroot_list_file文件内的用户名不chroot *
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
userlist_deny=NO
#验证方式 *
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
#设置被动模式
pasv_enable=yes
#被动模式的最小端口 *
pasv_min_port=10020
#被动模式的最大端口 *
pasv_max_port=10040
#用户配置目录,若foo用户,则需要建立/var/ftp/foo文件 *
user_config_dir=/var/ftp
[/code]
注意a:ftp的主动连接模式和被动连接模式
主动连接:
客户端连上ftp服务器的21端口,这个端口用来传输命令,当时主动连接模式时,客户端会传输一个命令给ftp服务器,“我打开了xxx端口,请过来连我”。

被动模式:
客户端连上ftp服务器的21端口,当时被动连接模式时,服务器会传输一个命令给客户端,“我打开了xxx端口,请过来连我”。
这里需要注意的是,ftp服务器来连客户端应该是需要客户端是拥有外网ip的。而客户端去连外网ftp服务器的数据端口,需要外网ftp服务器打开端口的防火墙。
注意b:防火墙
配置好被动模式,外网ftp服务器需要防火墙需要打开10020到10040端口:
[code lang="cpp"]
iptables -I INPUT -p tcp --dport 10020:10040 -j ACCEPT
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
//保存配置
service iptables save
[/code]
注意c:设置chroot,假设foo用户,ftp上来后,只能访问/usr/local/src/test目录
1.在/etc/vsftpd/vsftpd.conf添加配置项:
user_config_dir=/var/ftp
2.新建/var/ftp/foo文件,内容如下:
local_root=/usr/local/src/bz_complie/ftp_home
3.同时/etc/vsftpd/vsftpd.conf添加如下配置:
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
限定每个用户访问指定目录,同时chroot_list_file为例外的用户名单。

二.测试
linux下安装ftp命令
yum search ftp
搜到ftp.x86_64
yum install ftp.x86_64

测试上传
[code lang="cpp"]
[test@localhost ~]$ ftp 127.0.0.1 21
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 3.0.2)
Name (127.0.0.1:test): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put makefile
local: makefile remote: makefile
227 Entering Passive Mode (127,0,0,1,27,225).
553 Could not create file.
ftp> put
(local-file) makefile
(remote-file) makefile
local: makefile remote: makefile
227 Entering Passive Mode (127,0,0,1,90,14).
553 Could not create file.
ftp> put
(local-file) makefile
(remote-file) makefile
local: makefile remote: makefile
227 Entering Passive Mode (127,0,0,1,143,218).
150 Ok to send data.
226 Transfer complete.
3130 bytes sent in 1.8e-05 secs (173888.88 Kbytes/sec)
ftp> 221 Goodbye.
[/code]

若访问失败,则ftp里面调用debug查看原因,发现为port模式,用passive设置为被动模式连接成功