FTP服务--匿名用户登陆、使用本地用户验证登录(禁锢用户)、设置部分用户可登录或不可登录、建立虚拟用户使用FTP、给某个特定的虚拟用户配置功能

文章目录

  • 实验内容
    • 1.给匿名用户放权
    • 2.使用本地用户登录
    • 3.设置部分用户可登录或部分用户不可登录
    • 4.建立虚拟用户使用FTP
    • 5.给某个特定的虚拟用户配置功能

一台centos7服务器和一台windows均为仅主机模式,可互相通信

实验内容

1.匿名用户登陆,给匿名用户放权,使之可以上传文件
2.使用本地用户验证登录,并限制在家目录内不能随意切换目录
3.设置部分用户可登录或不可登录
4.建立虚拟用户使用FTP
5.给某个特定的虚拟用户配置功能

1.给匿名用户放权

服务器配置

[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

客户端可以访问了
FTP服务--匿名用户登陆、使用本地用户验证登录(禁锢用户)、设置部分用户可登录或不可登录、建立虚拟用户使用FTP、给某个特定的虚拟用户配置功能_第1张图片
FTP服务--匿名用户登陆、使用本地用户验证登录(禁锢用户)、设置部分用户可登录或不可登录、建立虚拟用户使用FTP、给某个特定的虚拟用户配置功能_第2张图片
上传文件受限
FTP服务--匿名用户登陆、使用本地用户验证登录(禁锢用户)、设置部分用户可登录或不可登录、建立虚拟用户使用FTP、给某个特定的虚拟用户配置功能_第3张图片
在服务器上给匿名用户放权

[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

客户端访问
FTP服务--匿名用户登陆、使用本地用户验证登录(禁锢用户)、设置部分用户可登录或不可登录、建立虚拟用户使用FTP、给某个特定的虚拟用户配置功能_第4张图片

服务端查看上传的文件

[root@localhost ftp]# cd pub
[root@localhost pub]# ls
zh.txt
[root@localhost pub]# 

2.使用本地用户登录

创建用户设置密码即可登录

[root@localhost ~]# useradd tom3
[root@localhost ~]# useradd tom4
[root@localhost ~]# passwd tom3
更改用户 tom3 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# passwd tom4
更改用户 tom4 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# 

用户端访问
FTP服务--匿名用户登陆、使用本地用户验证登录(禁锢用户)、设置部分用户可登录或不可登录、建立虚拟用户使用FTP、给某个特定的虚拟用户配置功能_第5张图片
限制用户在自己的家目录下,不能随意切换目录

[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]# 

用户端测试
会显示切换目录失败
FTP服务--匿名用户登陆、使用本地用户验证登录(禁锢用户)、设置部分用户可登录或不可登录、建立虚拟用户使用FTP、给某个特定的虚拟用户配置功能_第6张图片

3.设置部分用户可登录或部分用户不可登录

在/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

客户端测试
已经不允许tom3登录了
FTP服务--匿名用户登陆、使用本地用户验证登录(禁锢用户)、设置部分用户可登录或不可登录、建立虚拟用户使用FTP、给某个特定的虚拟用户配置功能_第7张图片

在配置文件中加入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

客户端测试
名单里的用户可以登录了
FTP服务--匿名用户登陆、使用本地用户验证登录(禁锢用户)、设置部分用户可登录或不可登录、建立虚拟用户使用FTP、给某个特定的虚拟用户配置功能_第8张图片

记得删除userlist_enable=NO

4.建立虚拟用户使用FTP

在/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登录上传文件
FTP服务--匿名用户登陆、使用本地用户验证登录(禁锢用户)、设置部分用户可登录或不可登录、建立虚拟用户使用FTP、给某个特定的虚拟用户配置功能_第9张图片
服务器查看上传文件
显示本地vuser用户传的文件

[root@localhost vsftpd]# ll /opt/vuser/
总用量 0
-rw-------. 1 vuser vuser 0 7月  19 10:48 zh.txt
[root@localhost vsftpd]# 

5.给某个特定的虚拟用户配置功能

[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]#

客户端测试
FTP服务--匿名用户登陆、使用本地用户验证登录(禁锢用户)、设置部分用户可登录或不可登录、建立虚拟用户使用FTP、给某个特定的虚拟用户配置功能_第10张图片
服务器查看

[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]# 

你可能感兴趣的:(linux,centos,ftp)