Vsftp安装和配置

来自linux中国网wiki
Evan讨论 | 贡献2021年11月19日 (五) 08:26的版本 →‎vsftp限制FTP用户只能访问自己的目录
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

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目录


我的配置 
cat /etc/vsftpd/vsftpd.conf | grep -v \^#
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
allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

https://blog.csdn.net/qq_15034457/article/details/78238651

https://blog.csdn.net/ijijni/article/details/54237030

安装

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 错误什么 的

参考

https://phoenixnap.com/kb/how-to-setup-ftp-server-install-vsftpd-centos-7

在命令行下实验FTP的PASV传输模式

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.conf超详解配置

史上最详细的vsftpd配置文件讲解 http://os.51cto.com/art/201008/221842_all.htm


我见过最好的vsftpd配置教程

CentOS7种搭建FTP服务器