vsftp虚拟用户方式访问
需求:外部人员需要对公司服务器上某个文件夹内容进行读写操作
文件目录信息:/opt/abc
drwxr-xr-x 9 www www 4096 12月 4 13:02 abc #注意最初abc的www用户组没有写权限
为了后面的ftp用户能够对此文件具备写操作,需要添加www用户组的写权限:
chmod g+w /opt/abc -R
drwxrwxr-x 9 www www 4096 12月 4 13:02 abc
一、安装vsftpd服务
确保selinux关闭以及防火墙关闭或开启21端口
yum install vsftpd
systemctl start vsftpd
systemctl enable vsftpd
netstat -tanlp|grep vsftpd
二、配置vsftpd
修改配置前养成好习惯,先备份一下
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
这里使用虚拟用户访问ftp服务器
若基于Vsftpd系统用户访问FTP服务器,系统用户越多越不利于管理,而且不利于系统安全管理,鉴于此,为了能更加的安全使用VSFTPD,需使用Vsftpd虚拟用户方式。
Vsftpd虚拟用户原理:虚拟用户就是没有实际的真实系统用户,而是通过映射到其中一个真实系统用户(没有密码,也不具备登陆权限)以及设置相应的权限来实现访问验证,虚拟用户不能登录Linux系统,从而让系统更加的安全可靠。
配置步骤如下:
1、安装Vsftpd虚拟用户需用到的软件及认证模块:
yum install pam* libdb-utils libdb* --skip-broken -y
2、创建虚拟用户临时用户文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码,其中ftp1为虚拟用户名,123为密码,如果有多个用户,依如下格式填写即可
ftp1
123
3、生成Vsftpd虚拟用户数据库认证文件,并设置权限700:
db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db # 每次在/etc/vsftpd/ftpusers.txt添加了新的虚拟用户后,需要再次执行此命令
解释:(不一定准确)
db_load做数据库生成;
-T 允许应用程序能够将文本文件转译载入进数据库。由于我们之后是将虚拟用户的信息以文件方式存储在文件里的,为了让Vsftpd这个应用程序能够通过文本来载入用户数据,必须要使用这个选项。指定了选项-T,那么一定要追加子选项-t;
-t 追加在在-T选项后,用来指定转译载入的数据库类型;
hash就是使用hash码加密
-f 参数后面接包含用户名和密码的文本文件,文件的内容是:奇数行用户名、偶数行密码。
chmod 700 /etc/vsftpd/vsftpd_login.db #将vsftpd_login.db隐藏,除root用户外,其他用户无法查询到虚拟用户信息
4、配置PAM认证文件,让PAM采用相应的认证模块和刚刚建立的用户数据库,/etc/pam.d/vsftpd行首加入如下两行(最好是将其他行删除):
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
5、所有Vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用,创建命令如下:
useradd -s /sbin/nologin ftpuser
6、完整vsftpd.conf配置文件代码如下:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
userlist_enable=YES
tcp_wrappers=YES
# 以下配置为开启虚拟用户功能
pam_service_name=vsftpd # 虚拟用户启用pam认证;vsftpd是pam认证指定的文件
guest_enable=YES # 启用虚拟用户;
guest_username=ftpuser # 映射虚拟用户至系统用户ftpuser;
user_config_dir=/etc/vsftpd/vsftpd_user_conf # 设置虚拟用户配置文件所在的目录;
virtual_use_local_privs=YES # 虚拟用户使用与本地用户相同的权限。
# 以下配置为锁定虚拟用户在自己的目录,不能查看到其他目录(如不配置,通过ftp工具可以查看到系统所有目录虽然无写权限)
chroot_local_user=YES
allow_writeable_chroot=YES
7、为虚拟用户ftp1创建配置专有的配置文件以及家目录,如果有多个虚拟用户同此操作
在/etc/vsftpd/vsftpd_user_conf下创建ftp1虚拟用户的配置文件
mkdir -p /etc/vsftpd/vsftpd_user_conf/ftp1
内容如下:
ocal_root=/home/ftpuser/ftp1 # 虚拟用户家目录所在位置
write_enable=YES # 允许登陆用户有写权限
anon_world_readable_only=YES # 允许匿名用户下载,然后读取文件
anon_upload_enable=YES # 允许匿名用户上传文件权限,只有在write_enable=YES时该参数才生效;
anon_mkdir_write_enable=YES # 允许匿名用户创建目录,只有在write_enable=YES时该参数才生效;
anon_other_write_enable=YES # 允许匿名用户其他权限,例如删除、重命名等。
8、创建虚拟用户家目录目录:
mkdir -p /home/ftpuser/ftp1
chown -R ftpuser:ftpuser /home/ftpuser # 递归更改虚拟用户主目录以及家目录的所有者和属组,才能具备相应权限。
chmod -R 777 /home/ftpuser # root帐号在ftp1下面创建了多级目录和文件后,需要授权,客户端ftp1登录了才能够对其删除和修改。
三、虚拟用户访问家目录之外的目录
以上操作,ftp1这个用户已经可以访问ftp服务器,并在其家目录中进行上传下载添加删除等操作,但用户要访问服务器上其他目录怎么办?操作如下:
第一反应是对需要访问(abc文件)的目录做一个软连接,成功的失败了 --_--,不是说不能做链接,只是做了后不能达到想要的效果。
最终通过革命先贤的智慧知道还可以将abc文件mount到ftp1家目录下:
1、先到ftp1家目录中创建abc文件夹,用户挂载使用
mkdir -p /home/ftpuser/ftp1/abc
2、挂载目录
mount --bind /opt/abc /home/ftpuser/ftp1/abc
3、如果以后需要解除挂载,执行如下命令把/home/ftpuser/ftp1/abc目录的umount即可
umount /home/ftpuser/ftp1/abc
4、以上步骤仅仅是成功挂载了,虚拟用户ftp1仅仅能对abc目录中的文件进行下载操作,但无上传、删除等操作,需要如下操作
1)将ftpuser用户加入到www用户组,因为abc这个目录属于www用户组
#查看当前ftpuser用户信息
id ftpuser
uid=1005(ftpuser) gid=1005(ftpuser) 组=1005(ftpuser)
#不改变原来用户信息下添加至www用户组
usermod -a -G www ftpuser
#再次ftpuser用户信息,ftpuser已经加入到了www用户组中
id ftpuser
uid=1005(ftpuser) gid=1005(ftpuser) 组=1005(ftpuser),1004(www)
2)让/opt/abc下所有文件所属组具备写权限
chmod g+w /opt/abc -R
至此虚拟用户ftp1已可对abc文件进行任何操作。
排错思路:
1、查看SELinux、防火墙
2、查看vsftpd进程
3、查看vsftpd.conf主配置文件
4、查看虚拟用户配置文件
5、查看数据库,查看Pam模块,新添加虚拟用户后需要重新生成数据库文件
6、查看home/ftpuser下虚拟用户家目录是否创建
7、修改配置后重启vsftpd服务
vsftp虚拟用户方式访问的更多相关文章
- CentOS 7搭建vsftp(虚拟用户方式登录)
说明: vsftpd的版本:vsftpd-3.0.2-22.el7.x86_64 ftp 根目录 : /data/ftp ftp 配置文件目录:/etc/vsftpd ftp 虚拟用户权限配置文件目录 ...
- vsftp虚拟用户登录配置详解
一.安装:1.安装Vsftpd服务:# yum install vsftpd 2.安装DB4部件包:这里要特别安装一个db4的包,用来支持文件数据库.# yum install db4-utils 二 ...
- vsftp 虚拟用户高级设置(转载)
发布:xiaokk 来源:net [大 中 小] vsftp 虚拟用户高级设置 本文转自:http://www.jbxue.com/article/1724.html 1.安装所需软件包 ...
- vsftp虚拟用户配置
找了很久,终于找到像样一点的文章,很详细,参数方面懂英文基本能看懂,一个教程是否有用,关键在于细节.错了一点点就不能配下去了. ------------------------------------ ...
- vsftp 虚拟用户
首先安装vsftp db-4wiki mkdir -p /opt/ftp 创建用户 sudo useradd virtual -d /opt/ftp -s /bin/false sudo chown ...
- centos 7.2下搭建vsftp 虚拟用户
虚拟用户搭建vsftp 要求一: 只允许上传 下载 不能删除 不能更换名称 yum install pam* yum install db4* -y yum install vsftpd chkcon ...
- vsftp 虚拟用户+MySQL认证独立家目录
centos7 系统 安装包 yum -y install mariadb vsftpd openssl-devel mysql-devel pam-devel yum -y groupinsta ...
- vsftp 虚拟用户测试
1.创建用于进行FTP验证的帐号密码数据库文件,单数行为账户名,偶数行为密码.[root@rhel1 vsftpd]# vi /etc/vsftpd/vuser.listuser1123456user ...
- vsftp搭建+虚拟用户
yum安装vsfpd: [root@localhost ~]# yum -y install vsftpd db4-utils Loaded plugins: fastestmirror, refre ...
随机推荐
- asp.net mvc4 不支持EF6
参考文章:http://www.cnblogs.com/zeusro/p/3403771.html http://q.cnblogs.com/q/40926/ 解决方法是 1.把EF6删除改用EF5. ...
- c语言程序设计案例教程(第2版)笔记(六)—字符串处理实例
字符串处理 功能描述:从键盘输入一个文本行后,为用户提供菜单选择,实现字符串一些操作——显示文本行.查找并替换指定子串.删除指定子串.统计指定子串数目. 实现代码: #include<stdio ...
- 【BZOJ3514】Codechef MARCH14 GERALD07加强版(LCT_主席树)
题目: BZOJ3514 分析: 看到这题真的是一脸懵逼无从下手,只好膜题解.看到「森林的联通块数 = 点数 - 边数」这一句话就立刻什么都会了 QAQ . 这题最重要的就是意识到上面那个式子(正确性 ...
- (五)Python面向对象编程
根据廖雪峰老师的python教程写一些学习总结! 面向对象编程 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元, ...
- Tree POJ - 174
点分模板题 都快改的跟题解一模一样了2333333 #include<cstdio> #include<cstring> #include<algorithm> u ...
- DP Codeforces Round #260 (Div. 1) A. Boredom
题目传送门 /* 题意:选择a[k]然后a[k]-1和a[k]+1的全部删除,得到点数a[k],问最大点数 DP:状态转移方程:dp[i] = max (dp[i-1], dp[i-2] + (ll) ...
- Create the first sql server 2016 mobile report;创建 第一个 sqlserver 2016 Mobile report
在微软收购了datazen之后,sqlserver2016 集成了mobilereport,mobile report 基于html5,兼容各类主流浏览器,之前ssrs2008 R2中很多chart类 ...
- Service官方教程(7)Bound Service示例之1-同进程下直接继承Service
Extending the Binder class If your service is used only by the local application and does not need t ...
- ASP.NET MVC+Bootstrap个人博客之praise.js点赞特效插件(二)
1. 为啥要做这个点赞插件? praise.js是一款小巧的jQuery点赞插件,使用简便,效果美观. 在做个人博客时遇到了文章点赞问题.联想到各大社交网络中的点赞特效:手势放大.红心放大等等, ...
- h5学习-webstorm工具的激活
这里有个快速激活webstorm的方法:http://jingyan.baidu.com/article/9f63fb919674f2c8400f0e9a.html h5的轮廓工具:https://g ...