yum -y install vsftpd;
 yum -y install db4-utils; # pam加密工具
 yum -y install lftp; # 测试ftp的工具(其实lftp是个上传下载工具)
systemctl restart vsftpd;
 lftp anonymous@47.104.176.200 # 或者直接 lftp 47.104.176.200 也是作为匿名登录的(相当于直接用anonymous账户,ftp密码登录)
 然后输入密码ftp,即可登录
默认是/var/ftp目录。 下面有个pub文件夹。
 但是发现只能看,不能上传下载。也不能操作文件夹和文件。
vim /etc/vsftpd/vsftpd.conf
 去掉这2个的注释
 anon_upload_enable=YES
 anon_mkdir_write_enable=YES
 再添加一行:
 anon_other_write_enable=YES # 否则不能操作文件
 再添加一行:
 anon_umask=022 # 注意,不是local_mask, 因为anon_umask和local_umask的默认值是都是077
systemctl restart vsftpd;
 发现可以上传下载,增删文件了。
实际中要禁止匿名用户的:
 anonymous_enable=NO # anonymous_enable的默认值是YES,所以一定要显式的禁用掉。 设置为NO之后,其他的匿名选项都失效了
本地用户登录:
 useradd frank
 passwd frank #设置密码1234
 ssh frank@47.104.176.200 #验证下账户是否创建成功
systemctl restart vsftpd;
 发现可以登录了。
虚拟用户口令登录:
vim /etc/vsftpd/vftpuser.txt
 输入:
 guanyu
 1234
 zhangfei
 1234
用db_load命令生成虚拟用户口令文件(需要先安装db4-utils):
 db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db # 一定注意 最后的右斜杠,不加这个那么用法是错误的
编辑pam认证文件:
 vim /etc/pam.d/vsftpd
 将里面其他的都注释掉,添加下面这两行:
 auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
 account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
 account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
建立本地映射用户并设置宿主目录权限
 所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码。
 useradd -d /home/vftpsite -m -s /sbin/nologin vftpuser # -m(create home dir)表示创建目录
 chmod 700 /home/vftpsite
chmod 777 /home/vftpsite
配置vsftpd.conf:
 找到pam_service_name=vsftpd # 文件中默认有这个选项,表示指定pam文件
 并在上面添加2行:
 guest_enable=YES #开启虚拟用户
 guest_username=vftpuser #FTP虚拟用户对应的系统用户
vim /etc/vsftpd/vsftpd_user_conf/guanyu ,输入:
 write_enable=YES
 anon_world_readable_only=NO
 anon_upload_enable=YES
 anon_mkdir_write_enable=YES
 anon_other_write_enable=YES
 local_root=/home/vftpsite/guanyu
vim /etc/vsftpd/vsftpd_user_conf/zhangfei ,输入:
 write_enable=YES
 anon_world_readable_only=NO
 anon_upload_enable=YES
 anon_mkdir_write_enable=YES
 anon_other_write_enable=YES
 local_root=/home/vftpsite/zhangfei
service vsftpd restart # 启动ftp服务
yum -y install lftp # 安装测试ftp工具
 lftp 47.104.176.200
local_enable=YES # 允许本地用户登录
 write_enable=YES # 是否允许写入
 local_umask=022 # 本地用户上传文件的umask
 dirmessage_enable=YES #为YES则进入目录时显示此目录下由message_file选项指定的文本文件(,默认为.message)的内容
 xferlog_enable=YES #开启日志
xferlog_std_format=YES #标准格式
 connect_from_port_20=YES
 xferlog_file=/var/log/xferlog #ftp日志目录
idle_session_timeout=6000 #设置客户端连接时间
data_connection_timeout=1200 #设置数据连接时间 针对上传,下载
 chroot_list_enable=YES
 chroot_list_file=/etc/vsftpd/chroot_list #设置为YES则下面的控制有效
 chroot_list_enable=YES #若为NO,则记录在chroot_list_file所指定的文件(默认是/etc/vsftpd.chroot_list)中的用户将被chroot在登录后所在目录中,无法离开.如果为YES,则所记录的用户将不被chroot.这里YES.
 chroot_local_user=YES
 userlist_deny=NO #若设置为YES则记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户将无法login,并且将检察下面的userlist_deny选项
 userlist_enable=YES #若为NO,则仅接受记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户的login请求.若为YES则不接受这些用户的请求.
 userlist_file=/etc/vsftpd/user_list #白名单
 chroot_list_enable=YES
 local_root=/var/ftp/pub #根目录
 listen=YES
 pam_service_name=vsftpd
 userlist_enable=YES
 tcp_wrappers=YES
ftp一定要配置白名单么??
ftp 默认的根目录是哪里??
 /var/ftp # 一般通过 local_root=/var/ftp/pub 来设置 也有的说是 /var/ftp/pub
ftp默认的匿名用户是??
 帐号: anonymous
 密码: ftp
ftp匿名用户无法上传下载文件?
 去掉这2个的注释
 anon_upload_enable=YES
 anon_mkdir_write_enable=YES
 再添加一行:
 anon_umask=022 # 注意,不是local_mask, 因为anon_umask和local_umask的默认值是都是077
ftp的日志文件在哪里??
 /var/log 下的xferlog文件。
匿名登录选项:
 anonymous_enable=YES 允许匿名登录
 anon_umask=022
 anon_upload_enable=YES 允许匿名下载
 anon_mkdir_write_enable=YES 允许匿名创建文件(操作文件夹)
 anon_other_write_enable=YES 操作文件
umask 相当于去掉权限:
 假设文件夹是777 文件是666
 022 文件夹是755 文件是644
umask值 文件 目录
 022 644 755
 027 640 750
 002 664 775
 006 660 771
 007 660 770
========================================== ftpusers和user_list: ftpusers是万年黑名单,这里面的用户永远不能登录ftp。
user_list由userlist_enable和userlist_deny一起控制:
默认值(不启用用户列表功能,用户都可以访问):
 userlist_enable=NO
 userlist_deny=YES
只修改userlist_enable=YES: 启用用户列表功能,user_list中的用户都不能登录(相当于黑名单)
 userlist_enable=YES
 userlist_deny=YES
启用用户列表功能,只有user_list中的用户才能登录(相当于白名单)
 userlist_enable=YES
 userlist_deny=NO
如下表:
| 方案 | 配置 | 描述 | 
| 默认(不启用策略) | userlist_enable=NO userlist_deny=YES | 不开启user_list  所有用户都可以访问 | 
| 黑名单策略 | userlist_enable=YES userlist_deny=YES | 开启user_list,采用拒绝策略,user_list中的用户拒绝访问 | 
| 白名单策略 | userlist_enable=YES userlist_deny=NO | 开启user_list,采用同意策略,user_list中的用户才能访问 | 
关于是否使用用户列表?? 默认不使用,但是推荐使用,因为更安全。
chroot_list_enable和chroot_local_user
                









