实验目标:(新增限制虚拟机用户登陆的IP)

实现在同一跟目录下对admin,upload,download三个虚拟用户的不同权限的控制。具体权限控制列表如下:

用户名 权限说明
admin 管理员,可以上传、下载、新建文件夹、删除和更改文件和文件夹名。
upload 不可以下载,可以上传、新建文件夹,但不能删除文件和文件夹,不能重命名原有文件和文件夹;
download 只能下载,不能进行其他操作。

以上三个虚拟用户均不允许登录系统,并且使用ftp时会被锁定在指定目录内不可进入系统其他目录。

1、安装vsftpd,Berkeley Database(db4)

yum install vsftpd db4-utils db4 -y

2、在/etc/vsftpd/vsftpd.conf加入或者更改以下配置语句:

anonymous_enable=NO                    #(当然你也可以设成YES,同时允许匿名用户登陆)
local_enable=YES #(必须置YES,因为虚拟用户是映射到virtual这个本地用户来访问的)
guest_enable=YES #启用虚拟机用户
guest_username=virtual #(第6步中创建,将虚拟用户映射为本地virtual用户)
pam_service_name=vsftpd #(第3步中创建,指定PAM配置文件,文件已经在/etc/pam.d/存在)
user_config_dir=/etc/vsftpd/user_conf #(第8,9步中创建,指定不同虚拟用户配置文件的存放路径)

整体配置如下,备份原配置,新建vsftpd.conf,加入下面配置

[root@jws-ftp var]# cat /etc/vsftpd/vsftpd.conf
# Example config file /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_enable=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd/user_conf
ftpd_banner=Welcome to FTP service
allow_writeable_chroot=YES
max_clients=300
max_per_ip=10
use_localtime=YES
[root@jws-ftp var]#

3、在/etc/pam.d/中修改文件vsftpd, 对比修改内容:

auth required pam_userdb.so db=/etc/vsftpd/vu_list
account required pam_userdb.so db=/etc/vsftpd/vu_list
#(/etc/vsftpd/vu_list 在第4,5步中创建,用户账号密码数据库文件)

#把原本的内容注释掉,用上面的两行代替,不然本地使用xftp无法连接,修改完后,vsftpd文件内容如下

[root@jws-ftp vsftpd]# cat /etc/pam.d/vsftpd
#%PAM-1.0
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
session required pam_loginuid.so
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list

4、建立用户列表/etc/vsftpd/vu_list.txt 内容如下:

upload       #(帐号)
123456 #(用户密码)
download #(帐号)
123456 #(用户密码)
admin #(帐号)
123456 #(用户密码)
#注意:不要有空行,一行账号 一行密码;奇数行为帐号,偶数行为密码

实际配置如下:

[root@jws-ftp ftp]# cat /etc/vsftpd/vu_list.txt
upload
123456
download
123456
admin
123456
[root@jws-ftp ftp]#

5、建立访问者数据文件(如果没有可以安装:yum install db4-utils)

[root@localhost vsftpd] db_load -T -t hash -f /etc/vsftpd/vu_list.txt /etc/vsftpd/vu_list.db
#修改db文件的权限,以免被非法用户修改 
[root@localhost vsftpd] chmod 600 /etc/vsftpd/vu_list.db

6、建立本地虚拟用户:

useradd -d /var/ftp -s /sbin/nologin virtual

7、在/var/ftp/创建目录并改变其属性和它的属主:

chown virtual /var/ftp
chmod 775 /var/ftp

8、创建ftp用户配制文件目录:/etc/vsftpd/user_conf:

mkdir /etc/vsftpd/user_conf

9、在/etc/vsftpd/user_conf目录中创建以用户名命名的配置文件upload、download、admin

“download”文件内容如下:(记得去掉斜杠内容)

local_root=/var/ftp            \\(也可以设置成其它,但要注意virtual用户对此目录的权限)
anon_world_readable_only=NO \\(使download用户的能下载,也只能下载;写成YES,将不能列出文件和目录)

实际配置如下:

[root@jws-ftp var]# cat /etc/vsftpd/user_conf/download
local_root=/var/ftp
anon_world_readable_only=NO

“admin”文件内容如下:(记得去掉斜杠内容)

local_root=/var/ftp
anon_world_readable_only=NO
write_enable=YES \\(写权限)
anon_mkdir_write_enable=YES \\(新建目录权限)
anon_upload_enable=YES \\(上传权限)
anon_other_write_enable=YES \\(删除/重命名的权限)

实际配置如下:

[root@jws-ftp vsftpd]# cat user_conf/admin
local_root=/var/ftp
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
allow_writeable_chroot=YES
[root@jws-ftp vsftpd]#

“upload”文件内容如下:

local_root=/var/ftp
anon_world_readable_only=NO
anon_umask=022 \\(此配置用于web页面,由于web页面的特殊性,故单独设置上传文件权限为755,此掩码值可根据具体情况更改)
write_enable=YES \\(写权限)
anon_mkdir_write_enable=YES \\(新建目录权限)
anon_upload_enable=YES \\(上传权限)
anon_other_write_enable=YES \\(删除/重命名的权限)

实际配置如下:

[root@jws-ftp vsftpd]# cat user_conf/upload
local_root=/var/ftp
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_world_readable_only=NO
download_enable=NO
[root@jws-ftp vsftpd]#

10、最后,重新启动VSFTPD

systemctl restart vsftpd

遇到的问题

1、启动报错

未创建chroot_list,可以创建一个空文件

2、登陆报错

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。

要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列项:

allow_writeable_chroot=YES

该需求刚做没多久,开发的小伙伴又出难题,这次需要控制某虚拟机用户只能从固定的IP段去登录FTP,目前查资料没有看到这届网友有可以直接控制虚拟用户的登陆IP的方法,只能通过笨办法,通过创建和虚拟用户同名的本地账号(禁止SSH登陆)来通过PAM模块做到虚拟用户的IP限制,说白了就是限制本地用户登录的IP从而达到限制虚拟用户的目的

PAM详解请参考:https://www.cnblogs.com/kevingrace/p/8671964.html

1)上面我们已经搭建好通过虚拟用户访问vsftpd,现在我们在/etc/pam.d/中修改文件vsftpd

[root@jws-ftp vsftpd]# cat /etc/pam.d/vsftpd
#%PAM-1.0
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
#session required pam_loginuid.so
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list
account required pam_access.so #加入该行
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list
[root@jws-ftp vsftpd]#

2)修改/etc/security/access.conf配置文件,在文件底部添加下面的一行:

[root@jws-ftp vsftpd]# vim /etc/security/access.conf
- : admin : ALL EXCEPT 10.153.59.188 10.153.49.7   #用户admin只能从10.153.59.188和10.153.49.7这两个IP访问FTP服务
- : download : 10.153.60.188 #download用户不允许从10.153.60.188这个IP访问FTP服务

3)创建admin用户和download用户
[root@jws-ftp vsftpd]# useradd -s /sbin/nologin admin
[root@jws-ftp vsftpd]# passwd admin
[root@jws-ftp vsftpd]# useradd -s /sbin/nologin download
[root@jws-ftp vsftpd]# passwd download

4)重启VSFTP服务
[root@jws-ftp vsftpd]# systemctl restart vsftpd

搭建VSFTP请参考(本地用户方式):https://www.cnblogs.com/yizhipanghu/p/12857964.html

Centos7 vsftpd虚拟用户权限控制(vsftpd虚拟用户限制IP访问)的更多相关文章

  1. linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制)

    linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制) 发表于2012//07由feng linux 本身的ugo rwx的权限,对于精确的权限控制很是力不从心的,ac ...

  2. Vue-Access-Control:前端用户权限控制解决方案

    原文地址:http://refined-x.com/2017/11/28/Vue2.0用户权限控制解决方案/ Vue-Access-Control是一套基于Vue/Vue-Router/axios 实 ...

  3. asp.net core根据用户权限控制页面元素的显示

    asp.net core根据用户权限控制页面元素的显示 Intro 在 web 应用中我们经常需要根据用户的不同允许用户访问不同的资源,显示不同的内容,之前做了一个 AccessControlHelp ...

  4. linux普通用户权限设置为超级用户权限方法、sudo不用登陆密码

    以用户zato为例 普通用户权限设置为超级用户权限 进入有超级用户权限的账号 添加文件可写(w)权限 sudo chmod u+x /etc/sudoers 编辑/etc/sudoers文件 添加语句 ...

  5. springmvc+spring+mybatis+maven项目集成shiro进行用户权限控制【转】

    项目结构:   1.maven项目的pom中引入shiro所需的jar包依赖关系 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  6. 基于RESTful API 怎么设计用户权限控制?

    前言 有人说,每个人都是平等的:也有人说,人生来就是不平等的:在人类社会中,并没有绝对的公平,一件事,并不是所有人都能去做:一样物,并不是所有人都能够拥有.每个人都有自己的角色,每种角色都有对某种资源 ...

  7. 基于RESTful API 设计用户权限控制

    RESTful简述 本文是基于RESTful描述的,需要你对这个有初步的了解. RESTful是什么? Representational State Transfer,简称REST,是Roy Fiel ...

  8. 转载 SAP用户权限控制设置及开发

    创建用户SU01 事务码:SU01,用户主数据的维护,可以创建.修改.删除.锁定.解锁.修改密码等 缺省:可以设置用户的起始菜单.登录的默认语言.数字显示格式.以及日期和时间的格式设置 参数:SAP很 ...

  9. kubernetes篇 容器用户权限控制

    问题起源 问题起源于一个开发BUG:正常运行一段时间的POD,突然有一天运行报错了,错误是没有操作目录的权限,查其原因,原来是镜像被更新了,镜像添加了操作用户,而被操作的目录(NFS目录)并不具备普通 ...

随机推荐

  1. BLE链路层状态机初探

    状态机 BLE链路层把所有的功能放到五种不同的状态中,在不同的状态分别执行不同的功能. 一般来说,BLE设备大致有这么几种状态:空闲,广播,扫描,发起连接和连接成功. 广播和扫描是相对应的,一个设备广 ...

  2. 这一次,彻底搞懂 Go Cond

    hi,大家好,我是 haohongfan. 本篇文章会从源码角度去深入剖析下 sync.Cond.Go 日常开发中 sync.Cond 可能是我们用的较少的控制并发的手段,因为大部分场景下都被 Cha ...

  3. day9.函数2

    一.函数对象 函数是第一类对象,第一等公民,函数对象即函数可以被当作变量去用. 具体分为四个方面: 1.可以被赋值 def func(): print('from func') f = func pr ...

  4. @valid和自定义异常

    @valid和自定义异常 问题的产生: 当有很多参数需要校验时,比如name,age,email等很多参数都需要判空,或者有长度限制时,如果后端写很多if-else就有很多代码,不美观,不优雅.前端每 ...

  5. 2.7w字!Java基础面试题/知识点总结!(2021 最新版)

    这篇<Java 基础知识总结>是 JavaGuide 上阅读量最高的一篇文章,由于我对其进行了重构完善并且修复了很多小问题,所以,在博客园再同步一下! 文章内容比较多,目录如下: 基础概念 ...

  6. 2020北航OO第四单元总结

    2020北航OO第四单元总结 一.本单元架构设计 本单元作业是实现一个UML图解析器,其中实现接口及主要框架课程组已经提供,只需要我们完成特定功能. 在第一次作业时,感到十分迷茫,不知道如何下手,最后 ...

  7. hdu2833 Floyd + dp

    题意:      给你一个无向图,给你两组起点和终点,问你这两组起点和终点的最短路上最多有多少个交点... 思路:      开一个数组dp[i][j]记录最短路上i,j之间的点有多少个,这个数组是根 ...

  8. hdu1824 基础2sat

    题意: Let's go home Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  9. 硬盘分区形式(MBR、GPT)、系统引导、文件系统、Inode和Block

    目录 MBR和GPT MBR的局限性 GPT的优势 主分区.扩展分区和逻辑分区 挂接卷 Legacy.UEFI引导和GRUB引导 文件系统(FAT16.32.NTFS和EXT2.3.4.Xfs.Tmp ...

  10. CVE-2018-0802:Microsoft office 公式编辑器 font name 字段二次溢出漏洞调试分析

    \x01 前言 CVE-2018-0802 是继 CVE-2017-11882 发现的又一个关于 font name 字段的溢出漏洞,又称之为 "第二代噩梦公式",巧合的是两个漏洞 ...