安装配置vsftpd作为FTP服务,我们的web应用使用git管理迭代,公共文件软件存储由开源网盘Seafile管理,基本够用。想不到使用FTP的场景,感觉好像变老了。虽然现在基本不用这个工具了,但正好公司需要用FTP下载配置文件,刷一个硬件,所以研究了一下,用了一下,把使用过程记录下来。?原文存放于此,会持续更新修正于此。我会记录下自己使用过程中的一些问题,安装前检查是否安装了vsftpd#检查是否安装方法一[root@localhost~]#rpm-qvsftpdvsftpd-3.0.2-21.el7.x86_64#检查是否已经安装方法二[root@localhost~]#vsftpd-vvsftpd:version3.0.2#安装vsftpd[root@localhost~]#yum-yinstallvsftpd查看位置[root@localhost~]#whereisvsftpdvsftpd:/usr/sbin/vsftpd/etc/vsftpd/usr/share/man/man8/vsftpd.8.gz启动vsftpd服务systemctl启动vsftpd.service关闭防火墙和SELinuxsetenforce0#设置SELinux成为许可模式(关闭SELinux)setenforce1#设置SELinux变为强制模式(开启SELinux)#或者修改配置vi/etc/selinux/config#SELINUX=enforcing#注释掉#SELINUXTYPE=targeted#注释掉SELINUX=disabled#添加:wq!#保存退出setenforce0或setSELinuxgetsebool-a|grepftpsetsebool-Pftpd_full_accessonsystemctlstopfirewalld.service#Stopfirewallsystemctldisablefirewalld.service#禁止防火墙启动如果不想关闭防火墙,需要在防火墙中添加FTP服务。firewall-cmd--permanent--zone=public--add-service=ftpfirewall-cmd--reload修改配置文件configurationfile/etc/vsftpd/vsftpd.confanonymous_enable=NO#不允许匿名访问,禁用匿名登录chroot_local_user=YES#在他们的主目录中启用受限用户use_localtime=YES#使用本地时(自己添加)chroot_list_enable=YESlocal_enable=YES#允许本地帐户用于FTP用户登录验证allow_writeable_chroot=YES#如果在他们的受限用户中启用home目录,他们需要添加这个配置来解决错误500OOPS:vsftpd:refusingtorunwithwritablerootinsidechroot()xferlog_enable=YES#开启上传下载日志功能,默认开启。local_umask=022#设置本地用户的默认文件掩码022#本地文件在FTP上的权限,默认是077,但是vsftpd安装后的配置文件默认是022虚拟用户高级参数当virtual_use_local_privs=YES时,虚拟用户和本地用户都有相同的权限;当virtual_use_local_privs=NO时,虚拟用户和匿名用户的权限相同,默认为NO。当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户有写权限(上传、下载、删除、重命名)。当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,没有其他权限。当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_upload_enable=NO时,虚拟用户只能下载文件,没有其他权限。当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_upload_enable=YES时,虚拟用户只能上传下载文件,没有其他权限。当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,没有其他权限。当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,没有其他权限。匿名登录安装后,默认开启匿名登录,对应/var/ftp目录。这时候只要启动服务,就可以直接连接FTP了。默认用户名是ftp,密码为空。如果在配置中配置anonymous_enable=NO,则不能匿名登录。$ftp192.168.188.114连接到192.168.188.114.220(vsFTPd3.0.2)名称(192.168.188.114:kennywang):ftp331请指定密码。密码:230登录成功。远程系统文件传输类型为binix.Us文件。ftp>ls229EnteringExtendedPassiveMode(|||47867|).150这是目录列表。-rw-r--r--10012Jan1806:31README.mddrwxr-xr-x2002005年11月6日19:43pub226目录发送成功。多用户配置多用户配置需要手动添加。以下内容在vsftpd.conf的末尾##use_localtime=YES#使用local时(自己添加)listen_port=21chroot_local_user=YES#在其home目录下启用受限用户idle_session_timeout=300data_connection_timeout=120#数据连接超时guest_enable=YES#设置开启虚拟用户功能guest_username=ftpuser#指定虚拟用户的主机用户ftpuser(也就是我们后面会创建这个用户)#guest_username=www#如果ftp目录指向网站的根目录,则用于上传网站程序,#可以将虚拟用户的host用户指定为nginx运行账号www,这样可以避免很多权限设置问题user_config_dir=/etc/vsftpd/vuser_conf#虚拟用户配置文件目录virtual_use_local_privs=YES#NO时,虚拟用户和匿名用户权限相同,默认为NOpasv_min_port=10060#被动模式最小端口号10060pasv_max_port=10090#被动模式最大端口号10090accept_timeout=5connect_timeout=1创建host用户,新建系统用户ftpuser,用户目录为/home/vsftpd,用户登录终端设置为/bin/false(即使不能登录系统)#方法一#创建用户ftpuser指定`/home/vsftpd`目录useradd-groot-M-d/home/vsftpd-s/sbin/nologinftpuser#设置用户ftpuser的密码passwdftpuser#将/home/vsftpd的所有权赋予ftpuser.rootchown-Rftpuser.root/home/vsftpd#方法2useraddftpuser-d/home/vsftpd-s/bin/falsechownftpuser:ftpuser/home/vsftpd-R#如果虚拟用户的host用户是www,需要这样设置#www目录就是你应用的目录chownwww:www/home/www-Rdeleteuseruserdelftpuser创建虚拟用户文件touch/etc/vsftpd/vuser_passwd#编辑虚拟用户列表文件:(#第一行帐号,第二行密码,注意:root不能用作用户名,系统保留)vi/etc/vsftpd/vuser_passwd#编辑内容,以下是vuser_passwd的内容wcj123456hss123456#保存退出生成虚拟用户数据文件db_load-T-thash-f/etc/vsftpd/vuser_passwd/etc/vsftpd/vuser_passwd.dbchmod600/etc/vsftpd/vuser_passwd.db创建用户配置mkdir/etc/vsftpd/vuser_conf#创建虚拟用户个人vsftp配置文件cd/etc/vsftpd/vuser_conf#进入目录触摸hsswcj#这里创建两个虚拟用户配置文件,每个文件配置文件都差不多,只是参数local_root不同local_root=/home/vsftpd/hss#用户hss配置目录,这个地方不同write_enable=YES#允许本地用户FTP服务器文件有写权限anon_world_readable_only=NOanon_upload_enable=YES#允许匿名用户上传文件(全局write_enable=YES,默认YES)anon_mkdir_write_enable=YES#允许匿名用户创建目录anon_other_write_enable=YES#允许匿名用户删除和重命名权限(自己添加)创建用户目录每个用户目录文件夹都是root用户创建的,即上面的local_root配置目录,其权限要设置为755,由于权限问题,不能直接在该文件夹上传文件.而如果设置为777,则无法访问,这是vsftpd的安全设置问题。上传问题的解决方法是在local_root文件夹下新建upload文件夹,设置权限为777,将文件上传到该文件夹??。mkdir-p/home/vsftpd/hss#每个用户为一个目录创建两个目录“hss”和“wcj”#下面是目录结构/home/vsftpd├──hss│├──filename.md│└──upload└──wcj└──filename.md#给它权限chmod-R777/var/vsftpd/hss/upload/#在/var/ftp下新建一个目录,让匿名用户可以上传mkdir/var/ftp的/uploadvsftpd中几个用户的区别:本地用户:该用户在FTP服务器上有一个账号,该账号是一个本地用户的账号,可以用自己的账号和密码登录,登录目录是自己的家directory$HOME虚拟用户:该用户在FTP服务器上有一个账号,但这个账号只能用于文件传输服务。登录目录是一个特定的目录,通常匿名用户可以上传下载:用户在FTP服务器上没有账号,登录目录是/var/ftp最后重启vsftpd服务器systemctlrestartvsftpd.service服务运行和maintenancesystemctlrestartvsftpd.service#重启服务systemctlstartvsftpd.service#启动服务systemctlstatusvsftpd.service#服务状态查看FTP命令ftp>ascii#设置以ASCII方式传输文件(默认值)ftp>bell#Every文件传输完成时,将提示警报。ftp>binary#设置以二进制方式传输文件。ftp>bye#终止主机的FTP进程,退出FTP管理模式。ftp>case#为ON时,使用MGET命令将文件名复制到本机,并全部转换为小写字母。ftp>cd#与UNIXCD命令相同。ftp>cdup#回到上层目录。ftp>chmod#更改远程主机的文件权限。ftp>close#终止远程FTP进程,回到FTP命令状态,所有的宏定义都被删除。ftp>delete#删除远程主机中的文件。ftp>dir[remote-directory]??[local-file]#列出当前远程主机目录中的文件。如果有本地文件,将结果写入本地文件。ftp>get[remote-file][local-file]#从远程主机发送到本地主机。ftp>help[command]#输出命令的解释。ftp>lcd#更改当前本地主机的工作目录,如果默认,则转到当前用户的HOME目录。ftp>ls[远程目录][本地文件]#与DIR相同。ftp>macdef#定义宏命令。ftp>mdelete[remote-files]#删除一批文件。ftp>mget[重新mote-files]#从远程主机接收一批文件到本地主机。ftp>mkdirdirectory-name#在远程主机中创建一个目录。ftp>mputlocal-files#将一批文件从本地主机传输到远程主机。ftp>openhost[port]#重新建立一个新的连接。ftp>prompt#交互式提示模式。ftp>putlocal-file[remote-file]#将本地文件传输到远程主机。ftp>pwd#列出当前远程主机目录。ftp>quit#与BYE相同。ftp>recvremote-file[local-file]#与GET相同。ftp>rename[from][to]#更改远程主机中的文件名.ftp>rmdirdirectory-name#删除远程主机中的目录。ftp>sendlocal-file[remote-file]#与PUT相同。ftp>status#显示当前FTP状态。ftp>system#显示远程主机的系统类型。ftp>useruser-name[password][account]#再次使用其他用户名登录远程主机。FTP>?[命令]#同帮助。[command]指定需要帮助的命令的名称。如果没有指定命令,ftp将显示所有命令的列表。FTP>!#从ftp子系统退出到shell。关闭FTP连接byeexitquit下载文件ftp>getreadme.txt#下载readme.txt文件ftp>mget*.txt#下载并上传文件ftp>put/path/readme.txt#上传readme.txt文件ftp>mput*.txt#可上传多个文件状态码230-登录成功200-命令执行成功150-文件状态正常,数据连接端口打开250-目录切换操作完成226-数据连接端口关闭,请求文件操作成功参考资料vsftpd虚拟用户ConfigureCentOS7安装配置FTP
