Vsftp安装和配置
vsftp安装和配置
vsftp限制FTP用户只能访问自己的目录
#今天有个业务有这个要求 修改配置文件/etc/vsftpd/vsftpd.conf chroot_local_user=YES allow_writeable_chroot=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list /etc/vsftpd/chroot_list 随便填写个进去 vi /etc/vsftpd/chroot_list 在这个配置文件中添加用户,每个用户一行,则在这个文件里的用户登录ftp后,可以访问上级目录。 而不在这个配置文件中的用户只能访问自己的home目录
安装
debian
apt-get install vsftpd
匿名配置
cd /srv/ftp/ 切换到根目录 #sudo mkdir pub #新建立pub目录做为 匿名用户的上传目录 #我的如下呢 好像不行 mkdir -p /data/ftpdata/pub/ ln -s /data/ftpdata/pub/ pub 因为 修改vsftp匿名访问目录 vsftp的匿名访问目录为 /var/ftp 修改匿名访问目录只需要在 /etc/vsftpd/vsftpd.conf 文件添加一行 anon_root=/home/xxxx/xxxx sudo chown -R ftp:ftp pub #为pub目录改其所有者组为 ftp 有人说是ftp:root sudo chmod -R 777 pub #为pub目录设置权限为全部可读可写可执行 配置 vsftpd.conf 配置文件修改 sudo vim /etc/vsftpd.conf anonymous_enable=YES #设置匿名用户可用 write_enable=YES # 设置用户写的权限 YES anon_upload_enable=YES #设置匿名用户上传YES anon_mkdir_write_enable=YES # 设置匿名用户新建目录YES
创建用户
# 服务创建一个目录 # 域名 https://play.com 指向到这个目录, # FTP 上传文件直接上传到这个目录即可 用户名: ftplive 密码:t44444 sudo adduser ftplive -d /data/www/we/ sudo passwd ftplive #echo “testuser” | sudo tee –a /etc/vsftpd/user_list
工作模式
FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。 在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通 知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。 总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。 被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而 只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。
troubleshooting
pasv 的相关配置 今天 小伙伴用的是 pasv_address 结果 是传输有问题 去掉就好 ,顺便记录一下 pasv_address=(none) #使vsftpd在pasv命令回复时跳转到指定的IP地址.(服务器联接跳转?) pasv_enable=<YES/NO> :#允许使用pasv模式 是否使用被动模式的数据连接,如果客户机在防火墙后,请开启为YES pasv_min_port=<n> pasv_max_port=<m> :设置被动模式后的数据连接端口范围在n和m之间,建议为50000-60000端口 vsftpd 服务器报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot() 可以不启用chroot 如果启用chroot,必须保证ftp根目录不可写,这样对于ftp根直接为网站根目录的用户不方便,所以建议假如ftp根目录是/home/${cjh},则将访问权限改写如下 chmod a-w /home/cjh
on centos7
#anonymous配置 cat /etc/vsftpd/vsftpd.conf | grep -v ^# | sort -u anon_mkdir_write_enable=YES anon_other_write_enable=YES anon_upload_enable=YES anonymous_enable=YES ascii_download_enable=YES ascii_upload_enable=YES connect_from_port_20=YES dirmessage_enable=YES listen_ipv6=NO listen=YES local_enable=YES local_umask=022 pam_service_name=vsftpd tcp_wrappers=YES userlist_enable=YES write_enable=YES xferlog_enable=YES xferlog_std_format=YES #今天有个坑 忘记 chmod -R 0777 /var/ftp/请点击 不然是各种550 错误什么 的
参考
How to install and configure VSFTPD server on Debian or ubuntu
vsftp install and selinux config on centos6.x
Vsftpd http://wiki.ubuntu.org.cn/Vsftpd
vsftp http://blog.linuxchina.net/?p=1356
史上最详细的vsftpd配置文件讲解 http://os.51cto.com/art/201008/221842_all.htm