https://blog.csdn.net/qq_36938617/article/details/89077845https://blog.51cto.com/meiling/2071122https://blog.csdn.net/ice_bird/article/details/91872804yum安装vsftpdyum install -y vsftpd启动服务systemctl start vsftpd.service&&systemctl enable vsftpd.service修改配置文件vi /etc/vsftpd/vsftpd.confanonymous_enable=NO #12行 不允许匿名访问local_enable=YES #16行 设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。write_enable=YES #19行 设定可以进行写操作。local_umask=022 #23行 设定上传后文件的权限掩码,文件644,文件夹755anon_upload_enable=NO #29行 禁止匿名用户上传文件。anon_mkdir_write_enable=NO #33行 禁止匿名用户建立目录。dirmessage_enable=NO #37行 设定开启目录标语功能 看自己需求。xferlog_enable=YES #40行 设定开启日志记录功能。chown_uploads=NO #48行 设定禁止上传文件更改宿主。xferlog_file=/var/log/vsftpd.log #53行 设定Vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了Vsftpd的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败。xferlog_std_format=YES #57行 设定日志使用标准的记录格式。idle_session_timeout=600 #60行 设定空闲连接超时时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值600,单位秒。nopriv_user=vsftpd #67行 设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。async_abor_enable=YES #72行 设定支持异步传输功能。ascii_upload_enable=YES #83行 设定支持ASCII模式的上传功能。ascii_download_enable=YES #84行 设定支持ASCII模式的下载功能。#cmds_allowed=ABOR,RETR,ACCT,ALLO,APPE,CDUP,CWD,EPRT,EPSV,FEAT,HELP,LIST,MDTM,MKD,MODE,NLST,NOOP,OPTS,PASS,PASV,PORT,PWD,QUIT,REIN,REST,SITE,SIZE,SMNT,STAT,STOU,STRU,SYST,TYPE,USER,XCUP,XCWD,XMKD,XPWD,XRMD,BYE,STOR#cmds_allowed需自己添加可以对vsftpd权限控制更加细化中间并不能有空格和回车chroot_local_user=YES #101行 将所有用户限制在主目录chroot_list_enable=NO #102行 所有用户都被限制在其主目录下。如果配置为YES,chroot_list_file指定的用户列表,将不受限制。pam_service_name=vsftpd #126行 设定,启用pam认证,并指定认证文件名/etc/pam.d/vsftpd。userlist_enable=YES #127行 设定userlist_file中的用户将不得使用FTP。tcp_wrappers=YES #128行 设定支持TCP Wrappers。#connect_from_port_21=YES #43行 默认21端口 注释掉。pasv_enable=YES #需添加 开启被动模式 listen_port=20021 #需添加 添加监听端口pasv_min_port=20022 #需添加 设置被动模式的端口范围,最小端口号~最大端口号 pasv_max_port=20025 #需添加 端口范围自己调整#local_root=/var/ftp/ #需添加 用户登录路径,local_root 针对系统用户#anon_root=/var/ftp/ #需添加 anon_root 针对匿名用户allow_writeable_chroot=YES #需添加(重要) 新版析vsfptd加入了安全需求,切根不允许写,要加这个选项user_config_dir=/etc/vsftpd/userconfig #需添加 用户配置目录防火墙开放端口firewall-cmd --zone=public --add-port=20021-20025/tcp --permanentfirewall-cmd --reload关闭selinuxvi /etc/sysconfig/selinuxSELINUX=enforcing 改为 SELINUX=disabled重启服务rebootgroupadd vsftpduseradd -g vsftpd -d /var/ftp -s /sbin/nologin vsftpd之后配置pam认证创建用户列表(一行用户名,一行密码)vi /etc/vsftpd/userconfig/user_list例:testusertestpasswd用户文件建立后生成数据库文件db_load -T -t hash -f /etc/vsftpd/userconfig/user_list /etc/vsftpd/userconfig/user_list.dbvi /etc/pam.d/vsftpdauth required pam_userdb.so db=/etc/vsftpd/userconfig/user_listaccount required pam_userdb.so db=/etc/vsftpd/userconfig/user_list最后在/etc/vsftpd/userconfig目录下建立与用户名相同的文件并配置相应的权例:vi /etc/vsftpd/userconfig/testuserlocal_root=/var/ftp/testuserwrite_enable=YES #允许虚拟用户有写得权限 anon_world_readable_only=YES #允许匿名用户可以下载和读取的权限 anon_upload_enable=YES #允许匿名用户有上传文件权限,在write_enable=YES时有效 anon_mkdir_write_enable=YES #允许匿名用户有创建目录权限write_enable=YES时有效 anon_other_write_enable=YES #允许匿名用户有其他权限(删除,重命名),在write_enable=YES时有效原文链接:https://blog.csdn.net/ice_bird/article/details/91872804
17)pam_service_name=vsftpd(虚拟用户使用PAM认证方式,这里是设置PAM使用的名称,默认即可,与/etc/pam.d/vsftpd对应) userlist_enable=YES(是否启用vsftpd.user_list文件,黑名单,白名单都可以17)pam_service_name=vsftpd(虚拟用户使用PAM认证方式,这里是设置PAM使用的名称,默认即可,与/etc/pam.d/vsftpd对应) userlist_enable=YES(是否启用vsftpd.user_list文件,黑名单,白名单都可以18)pasv_min_port=61001(被动模式使用端口范围最小值)19)pasv_max_port=62000(被动模式使用端口范围最大值)20)pasv_enable=YES(pasv_enable=YES/NO(YES)若设置为YES,则使用PASV工作模式;若设置为NO,则使用PORT模式。默认值为YES,即使用PASV工作模式。FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。 一、PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。 当需要传送数据时,客户端在命令链路上用 PORT命令告诉服务器:“我打开了****端口,你过来连接我”。于是服务器从20端口向客户端的****端口发送连接请求,建立一条数据链路来传送数据。 二、PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。 当需要传送数据时,服务器在命令链路上用 PASV命令告诉客户端:“我打开了****端口,你过来连接我”。于是客户端向服务器的****端口发送连接请求,建立一条数据链路来传送数据。 从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。原文链接:https://blog.csdn.net/qq_36938617/article/details/89077845
cat /etc/pam.d/vsftpd#%PAM-1.0#session optional pam_keyinit.so force revoke#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed#auth required pam_shells.so#auth include password-auth#account include password-auth#session required pam_loginuid.so#session include password-authauth required pam_userdb.so db=/etc/vsftpd/accountsaccount required pam_userdb.so db=/etc/vsftpd/accounts
虚拟用户登录
https://blog.51cto.com/meiling/2071122pam_service_name=vsftpd#虚拟用户使用PAM认证方式。guest_enable= YES/NO(NO)#设置PAM使用的名称,默认值为/etc/pam.d/vsftpd。guest_username=ftp#启用虚拟用户。默认值为NO。virtual_use_local_privs=YES/NO(NO)#这里用来映射虚拟用户。默认值为ftp。#当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。默认情况下此参数是关闭的(NO)。