vsftpd虚拟用户【公司系统部分享】
一,安装相关工具包
#yum -y install pam vsftpd db4 db4-utils
-- pam 是用来提供身份验证的
-- vsftpd 是ftp服务的主程序
-- db4支持文件数据库
-- db4的工具包
二,创建一个不能登录的用户,用作ftp服务的虚拟用户
由于这个ftp用户将来都是用来向网站上传文件的,所以
创建用户的时候将这个用户的家目录设置在web服务器的根目录
#useradd -d /home/web -s /sbin/nologin vuser_ftp
-d /home/web --指定用户的家目录;/home/web是web服务器的根目录
-s /sbin/nologin --指定用户的shell /sbin/nologin表示不能登录到shell
这里使用vuser_ftp作为虚拟用户的映射对象,在web服务器中可以使用httpd
这个服务的用户来作为虚拟用的映射。比如www apapche web
三,创建一个记录ftp虚拟用户的用户名和密码文件(文件名随便指定这里用login.txt)
此文件的格式为:一行用户名,换一行密码;多个用户分行写入。
例如:
#vi /etc/vsftpd/login.txt
test1
test1passwd
test2
test2passwd
四,使用db_load 命令生成虚拟用户认证文件
#db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db
longin.txt 文件是刚刚新建的用户名和密码文件。
vsftpd_login.db文件是db_load命令生成的虚拟用户认证文件,这个文件用vi打开
是看不到的,而且这个db文件的权限是600
db_load 这个命令是由db4-utils软件包提供的。如果没有这个命令就需要用安装
db4-utils这个安装包。redhat和centos可以直接用
#yum -y install db4-utils 来安装之前我已经用yum安装了 几个包同时安装的
其他版本的linux系统用其他的工具。
#
#目前login.txt内容是实验环境,如果需要增加用户就把用户名和密码按照规定的
#格式写入login.txt文件。每次增加完虚拟用户之后都用使用db_load 上面执行过
#那条命令来更新vsftpd_login.db这个虚拟用户认证文件。
#
五,修改ftp服务配置文件/etc/vsftpd/vsftpd.conf
可以把/etc/vsftpd/vsftpd.conf 备份一下然后修改vsftpd.conf 或者备份之后
重写一个vsftpd.conf文件
本次实验的vsftpd.conf 内容如下:
#vi /etc/vsftpd/vsftpd.conf
----------------------------------------------------------------------
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
listen=YES
userlist_enable=YES
tcp_wrappers=YES
max_per_ip=5
max_clients=100
#### 下面是关于虚拟用户的配置
guest_enable=YES #打开用户虚拟
guest_username=vuser_ftp #将所有虚拟用户映射成vuer_ftp这个本地用户
#此用户是之前新建的用户
pam_service_name=ftp.vu #ftp用户的pam验证方式,默认是vsftpd,必须改掉。
user_config_dir=/etc/vsftpd/vsftpd_user_conf #这里放置每个虚拟用户的配置文件
-------------------------------------------------------------------------
#####特别注意:vsftpd.conf 这个配置文件中每行的两端都不能有空格######
六,创建vsftpd.conf中提到的验证文件。
(1)使用 #rpm -ql vsftpd 这个命令查找验证模块的例文
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam
(2)然后拷贝到vsftpd.conf文件中配置的路径中并改变文件名
这条选项 pam_service_name=ftp.vu中ftp.vu使用的是相对路径。
绝对路径为: /etc/pam.d/ftp.vu
#cp /usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam /etc/pam.d/ftp.vu
上面这条命令就是把vsftpd程序自带的关于pam认证的模板文件拷贝到pam.d这个服务的工作
目录,同时改变文件名为ftp.vu;/etc/pam.d/目录下已经有了一个vsftpd.pam文件,
现在要做的是让vsftpd虚拟用户的这个功能用到的一个特殊的pam认证。还要修改下ftp.vu这个
文件
先来看下原文件的内容:
#vi /usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
在看下本次实验修改后的内容
#vi /etc/pam.d/ftp.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
-----
这里有两个需要注意修改的地方:
1,db=/etc/vsftpd/login 修改成db=/etc/vsftpd/vsftpd_login
把db= 定义的是验证数据文件存放的位置,这个文件是以.db结尾的。但是在/etc/pam.d/ftp.vu
中配置的时候不要加上.db
2,配置文件中间的 /lib/security/pam_userdb.so 如果你的系统是64位的,那么相应的路径
应是/lib64/security/pam.userdb.so 不然会出错
七,创建vsftpd.conf中提到的虚拟用户配置目录 。user_config_dir=/etc/vsftpd/vsftpd_user_conf
以及在这个目录下面创建每个用户的权限配置文件
1,创建/etc/vsftpd/vsftpd_user_conf目录:
#mkdir /etc/vsftpd/vsftpd_user_conf
2,在/etc/vsftpd/vsftpd_user_conf目录下面分别创建之前在login.txt虚拟用户名和密码文件中
提到的test1 test2 这两个虚拟用户的权限配置文件
可以使用#touch test1 命令先创建这个文件然后再用vi进行编辑。也可以直接用vi打开一个不
存在的文件,编辑后保存就可以了
#vi /etc/vsftpd/vsftpd_user_conf/test1
3,虚拟用户配置文件内容如下
#vi /etc/vsftpd/vsftpd_user_conf/test1
anon_world_readable_only=no #用户可以浏览和下载文件,不能设为yes,否则无法看到文件
write_enable=yes #用户可以创建文件
anon_upload_enable=yes #用户可以上传文件
anon_mkdir_write_enable=yes #用户有创建和删除目录的权限
anon_other_write_enable=yes #用户具有文件改名和删除文件的权限
local_root=/home/web/html #指定这个虚拟FTP用户的家目录。这里的html是你网站的根目录
在虚拟用户配置文件中以yes和no 这两个参数根据实际情况来控制ftp用户的权限,或者把对应的
语句删除
######这里需要注意的是配置语句的两端都不能有空格
之后在创建test2的权限控制文件
#cp /etc/vsftpd/vsftpd_user_conf/test1 /etc/vsftpd/vsftpd_user_conf/test2
在test2 文件中修改下test2文件的家目录即可
八,到这里,ftpd 的虚拟用户配置完毕。重启ftp服务就可以使用虚拟用户登录ftp
vuser_ftp这个用户是用来被映射的,所以这个用户不能登录到ftp
#/etc/init.d/vsftpd restart
九,诡异的问题
配置都正确但是vftpd的虚拟用户就是登录不了;或者可以登录但没有对这个目录下应有的权限。
此时此刻最有可能的罪魁祸首可能是selinux和iptables的问题。
1,iptables防火墙如果开启而ftp端口没有打开的话就不能连接到ftp
关闭防火墙:
#/etc/init.d/iptables stop
2,selinux如果没有关闭,它内置的一些规则就会让你的虚拟ftp用户服务器登录或者获得相应的
权限
关闭selinux:
#setenforce 0
十,补充:
1,虚拟用户的根目录如果在虚拟用户的配置文件中如果没有定义(local_root= ) 那么默认的根目录
就会被被映射为本地用户的根目录(之前建的vuser_ftp);所以虚拟用户要在这个目录中有权限
的话必须先开启,就是说被映射的这个本地用户要对这个虚拟用户指定的根目录有相应的权限。
2,这里实验用的是本地用户是vuser_ftp。在实际的配置中可以用httpd这个服务用户来作为被映射的
用户。这样一来整个网站的目录只需要一个用户,很容易做权限控制
vsftpd虚拟用户【公司系统部分享】的更多相关文章
- 烂泥:ubuntu下vsftpd虚拟用户配置
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我微信ilanniweb. 以前搭建vsftpd都是在centos下,本以为在ubuntu按照以前的步骤搭建即可.可 ...
- vsftpd虚拟用户创建实例(转载)
vsftpd虚拟用户创建实例 发布:theboy 来源:net [大 中 小] vsftpd虚拟用户创建实例,有需要的朋友可以参考下. vsftpd虚拟用户创建实例,有需要的朋友可以参考 ...
- VSFTPD虚拟用户配置
转载:http://www.cnblogs.com/allenjin/archive/2011/12/03/2274542.html 以下操作验证OK!!!! VSFTPD虚拟用户配置 VSFTP = ...
- ubuntu server vsftpd 虚拟用户及目录
ubuntu server vsftpd 虚拟用户及目录 一:需求场景: 在ubuntu server上开设一个虚拟网站,在网站目录建立一个ftp目录,允许用户通过ftp上传网站文件到网站目录: 同时 ...
- vsftpd 虚拟用户配置
vsftpd 虚拟用户的作用是 通过不同的虚拟用户可以有不同的根目录. 从 2.3.5 版本之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能在具有写权限了,如果检查 ...
- Ubuntu 12.04 LTS为例演示vsftpd虚拟用户 的配置
vsftpd虚拟用户 2012-05-19 15:46:59| 分类: GNU/Linux | 标签:ubuntu vsftpd ftp 虚拟用户 |举报|字号 订阅 我们登录FTP有 ...
- vsftpd 虚拟用户限定在虚拟用户目录
1.安装vsftpd yum -y install pam pam-devel db4 db4-tcl vsftpd 2.更名默认配置文件,以便恢复 cp /etc/vsftpd/vsftpd.con ...
- FTP服务-实现vsftpd虚拟用户
前几篇介绍了基础,这篇将具体实现几个案例 实现基于文件验证的vsftpd虚拟用户,每个用户独立一个文件夹 1.创建用户数据库文件 vim /etc/vsftpd/vusers.txt qq cento ...
- 实现验证的vsftpd虚拟用户
实现基于文件验证的vsftpd虚拟用户--(一台) 一.创建用户数据库文件 vim /etc/vsftpd/vuser cd /etc/vsftpd/ db_load -T -t hash -f vu ...
随机推荐
- jmeter 压测工具
Apache jmeter 压力测试 java 环境安装 https://www.cnblogs.com/smyhvae/p/3788534.html 下载地址和文档 http://itopic.or ...
- java查看工具jhat-windows
Analyzes the Java heap. This command is experimental and unsupported. Synopsis jhat [ options ] heap ...
- ThinkPHP第一课 环境搭建
第一课 环境搭建 1.说明: ThinkPHP是一个开源的国产PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的. 最早诞生于2006年初.原名FCS.2007年元旦正式更名为Think ...
- POJ 开关问题 1830【高斯消元求矩阵的秩】
Language: Default 开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 6656 Accepted: ...
- python中executemany的使用
conn = MySQLdb.connect(host = “localhost”, user = “root”, passwd = “password”, db = “myDB”, charset= ...
- 一个简单的HTML5摇一摇实例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- Java编码辅助工具:Lombok —— 避免重复臃肿的代码,提高效率
在项目开发过程中,经常会涉及到一些调整很少但又必不可少的环节,比如实体类的Getter/Setter方法,ToString方法等.这时可以使用Lombok来避免这种重复的操作,减少非核心代码的臃肿,提 ...
- Java中的线程池ExecutorService
示例 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.u ...
- Net dll版本兼容问题
Net dll组件版本兼容问题 https://www.cnblogs.com/newP/p/9543528.html dll组件版本兼容问题,是生产开发中经常遇到的问题,常见组件兼容问题如:Newt ...
- JAVA中两个Set比较找出交集、差集、并集
当做到某些功能的时候,使用Set能够快速方便地将需要的类型以集合类型保存在一个变量中,Set是最简单的一种集合,集合中的对象不按特定的方式排序,并且没有重复对象. //两个Set比较找出交集.差集.并 ...