1. FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。
  2. 安装vsftp(vsftp应该是一款不错的ftp软件。) yum search vsftp yum install vsftpd -y 对vsftp进行安装 systemctl start vsftpd 启动vsftpd服务 systemctl status vsftpd 查看vsftpd状态 3.设置防火墙 安装ftp服务 yun install ftp -y firewall-cmd --permanent --add-service=ftp 在防火墙中添加ftp服务 firewall-cmd --reload 重新加载参数 firewall-cmd --list-all 显示防火墙服务列表 4.ftp搭建成功

5.ftp配置文件修改 配置文件: /etc/vsftpd/vsftpd.conf 每次修改配置文件后需要重新启动服务才能生效 systemctl restart vsftpd.service 1.anonymous_enable=YES|NO #匿名用户可以|不可以登陆 匿名用户无法登陆 2.local_enable=YES|NO #本地用户可以|不可以登陆

3.write_enable=YES|NO ##ftp是否对登陆用户可写 服务未开启 4.报错id解析 500 ##文件系统权限过大 530 ##用户认证失败 550 ##服务本身功能未开启 553 ##本地文件系统权限过小 5.匿名用户上传 write_enable=YES anon_upload_enable=YES chgrp ftp /var/ftp/pub chmod 777 /var/ftp/pub(一定使用者需要有写权限) 匿名用户可以上传文件 6.匿名用户家目录修改(匿名用户家目录默认在/var/ftp) anon_root=/目录地址 在新的家目录里新建一个文件夹 file1 匿名用户登陆后验证 file1 则该家目录被修改 7.匿名用户上传文件默认权限修改 8.anon_mkdir_write_enable=YES|NO #匿名用户创建目录 服务未开启 目录被成功建立 9.anon_world_readable_only=NO #匿名用户下载,设定参数为no,表示匿名用户可以下载 服务未开启 下载成功 10.anon_other_write_enable=YES|NO #匿名用户删除 服务开启 删除成功 11.anon_max_rate=102400 #匿名用户最大上传速率 单位为字节 dd if=/dev/zero of=/mnt/redfile bs=1M count=1000 截取daxiao大小为1M的数据存在redfile中 上传平均速度为102400 12.匿名用户最大链接数 这里表示连接数最多为两个 13.匿名用户修改上传文件所有者 chown_uploads=YES chown_username=xxxx(系统已存在的用户名) 14.匿名用户修改上传文件权限 上传的文件权限被更改 本地用户 local_enable=YES|NO ##本地用户登陆限制 write_enable=YES|NO ##本地用户写权限 local_root=/绝对路径 本地用户家目录修改,默认登陆用户家目录 本地用户的登陆与写的权限开启 修改本地用户的家目录为/var/ftp local_umask=xxx #本地用户上传文件的umask值 限制本地用户浏览/目录 所有用户被锁定到自己家目录中 chroot_local_user=YES(此参数与用户写权限冲突,所以将用户所有写权限删除,由于此目录下只有拥有者有写权限,所以只需要把用户写权限减去。但是如果需要上传文件,则可能会出现553报错,建议减去用户权限后做完实验即可恢复。) chmod u-w /home/* 关闭后成功切换到 / 用户黑名单 chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list 在/etc/vsftpd/chroot_list名单的用户被锁定在自己家目录中

用户白名单 chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list 不在/etc/vsftpd/chroot_list名单的用户被锁定在自己家目录中

bruceiter 不在chroot_list中 则访问不了/目录

限制本地用户登陆 vim /etc/vsftpd/ftpusers ##用户黑名单 vim /etc/vsftpd/user_list ##用户临时黑名单

用户白名单设定 userlist_deny=NO ##将本来的名单权限打开,并且关闭黑名单权限,就是剩余白名单权限 /etc/vsftpd/user_list ##设定可以登陆ftp的用户 NO为打开
开启后所有用户登陆不了 在 /etc/vsftpd/user_list 添加后登陆成功

ftp虚拟用户的设定 vim /etc/vsftpd/userfile ##新建虚拟用户账户密码信息 user1 2233 user2 2233 user3 2233 db_load -T -t hash -f /etc/vsftpd/userfile /etc/vsftpd/userfile.db ##将新建的用户账户密码文件加密 vim /etc/pam.d/user ##编写验证账户密码若验证不通过拒绝,验证软件,被验证核对的文件 account required pam_userdb.so db=/etc/vsftpd/userfile(为之前建立的账户密码信息文件) auth required pam_userdb.so db=/etc/vsftpd/userfile vim /etc/vsftpd/vsftpd.conf pam_service_name=user ##验证的文件是从/etc/pam.d/user决定的,与其同名 guest_enable=YES ##设定虚拟用户登陆 guest_username=ftp ##登陆软件是ftp 登陆使用 -u是由于虚拟用户与本地用户都是使用ftp这个用户的身份,ftp用户是安装时就生成的。

虚拟帐号家目录独立设定 vim /etc/vsftpd/vsftpd.conf local_root=/ftphome/$USER ##区分虚拟账户家目录,但是由于$USER是脚本用法,所以用下一句来告诉ftp,$USER的用法与脚本中的$USER一样 user_sub_token=$USER
##可以在每个虚拟用户家目录下建立不同的文件作为标示。 mkdir /ftphome/user1/user1file -p mkdir /ftphome/user2/user2file -p mkdir /ftphome/user3/user3file -p

独立设置配置文件 vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/userconf 并且注释掉关于匿名用户的语句。在/etc/vsftpd/userconf/user1中添加关于匿名用户配置语句,重启服务,以用户1的身份链接出现创建文件,创建成功之后,若用户2创建不成功,则说明二者独立设置配置文件。但是应注意要把之前的配置文件关于匿名用户全部注释,否则默认读取原来的配置文件,没有找到权限就找自己的配置文件。