Centos7 vsftpd虚拟用户权限控制(vsftpd虚拟用户限制IP访问)
实验目标:(新增限制虚拟机用户登陆的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访问)的更多相关文章
- linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制)
linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制) 发表于2012//07由feng linux 本身的ugo rwx的权限,对于精确的权限控制很是力不从心的,ac ...
- Vue-Access-Control:前端用户权限控制解决方案
原文地址:http://refined-x.com/2017/11/28/Vue2.0用户权限控制解决方案/ Vue-Access-Control是一套基于Vue/Vue-Router/axios 实 ...
- asp.net core根据用户权限控制页面元素的显示
asp.net core根据用户权限控制页面元素的显示 Intro 在 web 应用中我们经常需要根据用户的不同允许用户访问不同的资源,显示不同的内容,之前做了一个 AccessControlHelp ...
- linux普通用户权限设置为超级用户权限方法、sudo不用登陆密码
以用户zato为例 普通用户权限设置为超级用户权限 进入有超级用户权限的账号 添加文件可写(w)权限 sudo chmod u+x /etc/sudoers 编辑/etc/sudoers文件 添加语句 ...
- 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 ...
- 基于RESTful API 怎么设计用户权限控制?
前言 有人说,每个人都是平等的:也有人说,人生来就是不平等的:在人类社会中,并没有绝对的公平,一件事,并不是所有人都能去做:一样物,并不是所有人都能够拥有.每个人都有自己的角色,每种角色都有对某种资源 ...
- 基于RESTful API 设计用户权限控制
RESTful简述 本文是基于RESTful描述的,需要你对这个有初步的了解. RESTful是什么? Representational State Transfer,简称REST,是Roy Fiel ...
- 转载 SAP用户权限控制设置及开发
创建用户SU01 事务码:SU01,用户主数据的维护,可以创建.修改.删除.锁定.解锁.修改密码等 缺省:可以设置用户的起始菜单.登录的默认语言.数字显示格式.以及日期和时间的格式设置 参数:SAP很 ...
- kubernetes篇 容器用户权限控制
问题起源 问题起源于一个开发BUG:正常运行一段时间的POD,突然有一天运行报错了,错误是没有操作目录的权限,查其原因,原来是镜像被更新了,镜像添加了操作用户,而被操作的目录(NFS目录)并不具备普通 ...
随机推荐
- C程序数组算法 — 冒泡法排序【前冒 || 后冒】
第一种写法(前冒泡): /* C程序数组算法 - 冒泡法排序 * 此例子按照 大 -> 小 排序 * 原理:两两相比较,然后进行大小对调 * 比较次数: n^2 次 * 说明:冒泡排序是相对稳定 ...
- 消息中间件-RabbitMQ消息可靠性和插件化机制
package com.study.rabbitmq.a132.confirm; import com.rabbitmq.client.*; import java.io.IOException; i ...
- Linux下屏幕亮度的调节
1 概述 Linux下的屏幕调节可以通过图形界面或者命令行进行调节,图形界面的话主要就是在设置中进行调节,如果设置中没有相应的选项可以进行手动调节. 2 手动调节 2.1 手动屏幕调节 亮度由ACPI ...
- 14.Quick QML-TextInput详解
1.TextInput属性用来编辑一行文本,对应QLineEdit,除了正常输入外,我们还可以设置echoMode属性改为密码显示状态,也可以通过validator属性和inputMask属性来设置验 ...
- 为什么有时博客中的代码复制进自己的VS中报错
昨天写代码时遇到一个问题,我搜了一篇博客,然后复制到我的WPF中, 然后,全报错(当时快给我气死了,一篇有一篇的不能用,试了一次又一次,时间全浪费在这上面了,没打游戏,做的东西也没出来) 问题原因: ...
- Docker学习笔记---通俗易懂
目录 Docker 简介 Docker安装 Docker的基本组成 安装Docker 配置阿里云镜像加速 回顾helloworld流程 工作原理 Docker的常用命令 帮助命令 镜像命令 容器命令 ...
- hdu5056(找相同字母不出现k次的子串个数)
题意: 给你一个字符串,然后问你这个字符串里面有多少个满足要求的子串,要求是每个子串相同字母出现的次数不能超过k. 思路: 这种题目做着比较有意思,而且不是很难(但自己还是嘚瑟,w ...
- 数据库的读写分离(Amoeba)
目录 Amoeba Amoeba读写分离的配置 Amoeba Amoeba(变形虫) 项目,该开源框架于2008年开始发布一款 Amoeba for Mysql软件. 这个软件基于Java致力于MyS ...
- Linux中编写Shell脚本
目录 Shell Shell脚本的执行 Shell脚本编写规范 Shell 中的变量 变量的算术运算 双小括号 (()) 数值运算命令的用法 let 运算命令的用法 expr 命令的用法 br 命令 ...
- Python爬虫之使用正则表达式抓取数据
目录 匹配标签 匹配title标签 a标签 table标签 匹配标签里面的属性 匹配a标签里面的URL 匹配img标签里的 src 相关文章:Linux中的正则表达式 Python中的正则表达式 实例 ...