一台centos7服务器和一台windows均为仅主机模式,可互相通信
1.匿名用户登陆,给匿名用户放权,使之可以上传文件
2.使用本地用户验证登录,并限制在家目录内不能随意切换目录
3.设置部分用户可登录或不可登录
4.建立虚拟用户使用FTP
5.给某个特定的虚拟用户配置功能
服务器配置
[root@localhost ~]# mount /dev/cdrom /mnt
[root@localhost ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:vsftpd-3.0.2-25.el7 ################################# [100%]
[root@localhost ~]# iptables -F ##关防火墙
[root@localhost ~]# enforce 0
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
...
anonymous_enable=YES
..
write_enable=YES
..
local_umask=022
# When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
anon_upload_enable=YES ###注释去掉
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES ##注释去掉
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
保存退出
查看man手册怎么配
[root@localhost ~]# man vsftpd.conf
anon_mkdir_write_enable
If set to YES, anonymous users will be permitted to create new directories under certain
conditions. For this to work, the option write_enable must be activated, and the anony‐
mous ftp user must have write permission on the parent directory.
Default: NO
anon_other_write_enable
If set to YES, anonymous users will be permitted to perform write operations other than
upload and create directory, such as deletion and renaming. This is generally not recom‐
mended but included for completeness.
Default: NO
再次修改
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES
anon_other_write_enable=YES ###添加
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
[root@localhost ~]# cd /var/ftp ##给pub文件夹放权,ftp文件目录,不允许放权到777,Linux保护机制
[root@localhost ftp]# ls
pub test.txt
[root@localhost ftp]# chmod 777 pub
[root@localhost ftp]#
[root@localhost ftp]# systemctl restart vsftpd
服务端查看上传的文件
[root@localhost ftp]# cd pub
[root@localhost pub]# ls
zh.txt
[root@localhost pub]#
创建用户设置密码即可登录
[root@localhost ~]# useradd tom3
[root@localhost ~]# useradd tom4
[root@localhost ~]# passwd tom3
更改用户 tom3 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# passwd tom4
更改用户 tom4 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]#
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
# the user does not have write access to the top level directory within the
# chroot)
chroot_local_user=YES ##前面的注释去掉,限制用户
chroot_list_enable=YES ##
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
在末尾添加
allow_writeable_chroot=YES
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]#
[root@localhost vsftpd]# vim chroot_list ##添加名单
root
[root@localhost vsftpd]# ls
chroot_list ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
[root@localhost vsftpd]#
在/etc/vsftpd/下有一个文件user_list,这个文件和配置文件/etc/vsftpd/vsftpd.conf中的userlist_enable相关联,默认userlist_enable=YES是开启的则不允许user_list里的用户登录,把tom3加入名单中测试
[root@localhost vsftpd]# vim user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file ###说明userlist如果不开启则名单中的是可以登录的用户
# If userlist_deny=YES (default), never allow users in this file, and ##默认开启,则不允许名单中的用户登录
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
...省略部分内容
tom3 ###加入tom3
[root@localhost vsftpd]# systemctl restart vsftpd
在配置文件中加入userlist_enbale=NO,tom3就可以登录了,后面还是要删掉这条,因为改了很多用户不能登了
[root@localhost vsftpd]# vim vsftpd.conf
pam_service_name=vsftpd
userlist_enable=YES ##找到这里
userlist_enable=NO ##添加
tcp_wrappers=YES
allow_writeable_chroot=YES
[root@localhost vsftpd]# systemctl restart vsftpd
记得删除userlist_enable=NO
在/etc/vsftpd/下创建文件vuser用于客户端登录的虚拟用户名单和密码
[root@localhost vsftpd]# vim vuser
tom5 ###奇数行用户名
123456 ##偶数行密码
tom6
123456
将vuser文件转换成数据库文件
[root@localhost vsftpd]# db_load -T -t hash -f vuser vuser.db
[root@localhost vsftpd]# ls
chroot_list ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh vuser vuser.db
[root@localhost vsftpd]# chmod 600 vuser vuser.db
创建本地虚拟用户,与客户端登录的虚拟用户对应,
[root@localhost vsftpd]# useradd -d /opt/vuser -s /sbin/nologin vuser
[root@localhost vsftpd]# id vuser
uid=1007(vuser) gid=1007(vuser) 组=1007(vuser)
[root@localhost vsftpd]# ls /opt
sb.txt test vuser
编辑pam认证模块支持虚拟用户登录
[root@localhost vsftpd]# vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser ##引入文件
account required pam_userdb.so db=/etc/vsftpd/vuser
修改主配置文件
[root@localhost vsftpd]# vim vsftpd.conf
...
#pam_service_name=vsftpd ##禁用原来的配置文件
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES ##
guest_username=vuser ##
allow_writeable_chroot=YES
pam_service_name=vsftpd.vu ##使用我们写的认证
[root@localhost vsftpd]# systemctl restart vsftpd
客户端测试
使用tom5登录上传文件
服务器查看上传文件
显示本地vuser用户传的文件
[root@localhost vsftpd]# ll /opt/vuser/
总用量 0
-rw-------. 1 vuser vuser 0 7月 19 10:48 zh.txt
[root@localhost vsftpd]#
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
#pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=vuser
allow_writeable_chroot=YES
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/vu_dir ###加这条
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# mkdir vu_dir
[root@localhost vu_dir]# vi tom5
anon_umask=022 ##设置反掩码,这样用户tom5上传的文件权限会变成644
[root@localhost vu_dir]#
[root@localhost vu_dir]# ls -l /opt/vuser/
总用量 0
-rw-r--r--. 1 vuser vuser 0 7月 19 11:51 ted.txt ###644
-rw-------. 1 vuser vuser 0 7月 19 10:48 zh.txt
[root@localhost vu_dir]#