CentOS6.3下vsftpd通过pam认证实现虚拟用户文件共享

FTP的全称是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.它工作在OSI模型的第七层,即是应用层,使用TCP传输而不是UDP.这样FTP客户端和服务器建立连接前就要经过一个"三次握手"的过程.FTP服务还有一个非常重要的特点是它可以独立于平台。

LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等。Red Hat Enterprise Linux中默认安装的是vsftpd。

通常,访问FTP服务器时需要经过验证,只有经过了FTP服务器的相关验证,用户才能访问和传输文件.vsftpd提供了3种ftp登录形式:

(1)anonymous(匿名帐号)

使用anonymous是应用广泛的一种FTP服务器.如果用户在FTP服务器上没有帐号,那么用户可以以anonymous为用户名,以自己的电子邮件地址为密码进行登录.当匿名用户登录FTP服务器后,其登录目录为匿名FTP服务器的根目录/var/ftp.为了减轻FTP服务器的负载,一般情况下,应关闭匿名帐号的上传功能。

(2)real(真实帐号)

real也称为本地帐号,就是以真实的用户名和密码进行登录,但前提条件是用户在FTP服务器上拥有自己的帐号.用真实帐号登录后,其登录的目录为用户自己的目录,该目录在系统建立帐号时系统就自动创建。

(3)guest(虚拟帐号)

如果用户在FTP服务器上拥有帐号,但此帐号只能用于文件传输服务,那么该帐号就是guest,guest是真实帐号的一种形式,它们的不同之处在于,geust登录FTP服务器后,不能访问除宿主目录以外的内容。

下面就对其详细介绍。

接下来我们开始实现vsftpd的虚拟用户的功能:

1、yum安装vsftpd程序:

[[email protected] ~]# yum install vsftpd -y

2、修改配置文件

备份修改配置文件

[[email protected] ~]# cd /etc/vsftpd
[[email protected] vsftpd]# ll
total 28
-rw-------. 1 root root  125 Oct 18 07:54 ftpusers
-rw-------. 1 root root  361 Oct 18 07:54 user_list
-rw-------. 1 root root 4599 Oct 18 07:54 vsftpd.conf
-rw-------. 1 root root 4599 Jan  6 10:53 vsftpd.conf.bak
-rwxr--r--. 1 root root  338 Oct 18 07:54 vsftpd_conf_migrate.sh
[[email protected] vsftpd]# cp vsftpd.conf{,.bak}
[[email protected] vsftpd]# cat vsftpd.conf | grep "^[^#]"
anonymous_enable=NO  //是否允许anonymous登录FTP服务器,默认是允许的。
local_enable=YES  //是否允许本地用户登录FTP服务器,默认是允许
write_enable=YES  //是否允许用户具有在FTP服务器文件中执行写的权限,默认是允许
anon_umask=022  //设置虚拟用户的文件生成掩码为022,默认是077
dirmessage_enable=YES  //激活目录信息,当远程用户更改目录时,将出现提示信息
xferlog_enable=YES  //启用上传和下载日志功能
connect_from_port_20=YES  //启用FTP数据端口的连接请求
xferlog_file=/var/log/vsftpd.log  //设置日志文件的文件名和存储路径,这是默认的
xferlog_std_format=YES  //是否使用标准的ftpd xferlog日志文件格式
listen=YES  //使vsftpd 处于独立启动模式
user_config_dir=/etc/vsftpd/vuser_dir  //使用虚拟用户配置文件的目录
pam_service_name=/etc/pam.d/ftp.vu  //设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d/目录下.
userlist_enable=NO  //用户列表中的用户是否允许登录FTP服务器,默认是不允许
chroot_list_enable=YES  //如果希望用户登录后不能切换到自己目录以外的其它目录,需要设置该项
tcp_wrappers=YES  //使用tcp_wrqppers作为主机访问控制方式
guest_enable=YES  //是否启用来宾用户(也就是启用虚拟用户)
guest_username=root  //如果启用了虚拟用户后上传文件修改文件的用户名
chown_uploads=YES  //是否启用上传文件后修改为指定的属主
chown_username=root  //是否启用上传文件后修改为指定的属主用户

3、在/etc/vsftpd/下创建两个目录

vuser_db   #后续存放虚拟用户的配置文件
vuser_dir  #存放虚拟用户的认证文件
[[email protected] vsftpd]# mkdir vuser_db vuser_dir
[[email protected] vsftpd]# cd vuser_db/
[[email protected] vuser_db]# ll   
total 20
-rw-r--r--. 1 root root    69 Jan  5 11:25 login_vuser
-rw-r--r--. 1 root root 12288 Jan  5 11:26 vuser.db
[[email protected] vuser_db]# vim login_vuser
//以下是login_vuser虚拟用户的帐号密码格式,奇数行为用户名,双数行为密码
user003
20150105
user004
20150106
user005
20150107
//生成数据库文件
//选项-T允许应用程序能够将文本文件转译载入进数据库。由于我们之后是将虚拟用户的信息以文件方式存储在文件里的,为了让Vsftpd这个应用程序能够通过文本来载入用户数据,必须要使用这个选项。
如果指定了选项-T,那么一定要追跟子选项-t
子选项-t,追加在在-T选项后,用来指定转译载入的数据库类型。扩展介绍下,-t可以指定的数据类型有Btree、Hash、Queue和Recon数据库。
-f:参数后面接包含用户名和密码的文本文件,文件的内容是:奇数行用户名、偶数行密码
[[email protected] vuser_db]# db_load -T -t hash -f /etc/vsftpd/vuser_db/login_vuser /etc/vsftpd/vuser_db/vuser.db

4、更改pam认证模块

[[email protected] vuser_db]# cd /etc/pam.d/
[[email protected] vuser_db]# vim ftp.vu  //这个文件名要与主配置文件中的pam_service_name指定的一致
//最后面的vuser就是vuser.db,但是这里的后缀不是需要写的
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_db/vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_db/vuser

5、为虚拟用户创建对应的文件

[[email protected] vsftpd]# cd /etc/vsftpd/vuser_dir/
[[email protected] vuser_dir]# ll   //login_vuser中有多少个帐号就创建多少个虚拟用户文件
total 6
-rw-r--r--. 1 root root 177 Jan  5 17:03 user003
-rw-r--r--. 1 root root 177 Jan  5 17:09 user004
-rw-r--r--. 1 root root 177 Jan  5 17:19 user005
[[email protected] vuser_dir]# vim user003
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/www/test  //指定虚拟用户有权限登录到哪个目录
chown_upload_mode=0777  //虚拟用户上传文件的权限设置

到这里基本上算是配置完成了,可以启动vsftpd服务了:

[email protected] vsftpd]# service vsftpd start

然后可以直接在windows下登录测试一下看了:

OK,到这里就完全实现了pam认证的vsftpd虚拟用户的配置了,可以实现虚拟用户登录FTP功能了。

时间: 2024-12-14 04:05:38

CentOS6.3下vsftpd通过pam认证实现虚拟用户文件共享的相关文章

Centos6下vsftpd基于mysql认证创建虚拟用户

一,安装环境以及安装的软件: 1,CentOS release 6.4 (Final) [IP:192.168.1.110] 2,vsftpd-2.2.2-13.el6_6.1.x86_64 3,pam_mysql-0.7-0.12.rc1.el6.x86_64 4,mysql-5.6.16(编译安装) 二,在数据库上创建登录ftp的账号和密码 1,创建对应的database,远程授权登录账号并创建表用来存储登录ftp账号密码. mysql> create database vsftpd; my

Linux下vsftpd安装以及配置FTP虚拟用户实践

首选的FTP服务器搭建方式 安装vsftpd #查看当前系统版本 cat /etc/redhat-release  CentOS release 6.6 (Final)  #查看是否已经安装vsftpd rpm -qa | grep vsftpd #如果没有,就安装,并设置开机启动 yum -y install vsftpd chkconfig vsftpd on 基于虚拟用户的配置 所谓虚拟用户就是没有使用真实的帐户,只是通过映射到真实帐户和设置权限的目的.虚拟用户不能登录CentOS系统.

vsftpd+pam+MySQL—->实现虚拟用户认证

一.安装所需要程序 1.安装vsftpd yum -y install vsftpd 2.安装MySQL yum -y install  mysql-server mysql-devel pam_mysql 二.创建虚拟用户账号 1.准备数据库及相关表 首先请确保mysql服务已经正常启动.而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库. mysql> create database vsftpd; mysql> grant select on vsftpd.* t

创建vsftpd服务器基于mysql的虚拟用户认证

简单罗列基础命令,只分享我的想法! 一.目的 要求:配置允许虚拟用户访问的vsftpd服务器,虚拟用户存储在另一台MySQL的服务器上面,虚拟用户账号有两个分别是tom和jerry,密码是tom和jerry,要求对这两个账户的权限做一下限制(根据实际的要求,自己调节). 环境:MySQL服务器(172.16.49.1),CentOS 6.6和MariaDB-5.5.43.另一台是通过yum安装vsftpd(192.168.0.22),OS是CentOS 6.6. MySQL是通用二进制格式安装,

Centos6.3 下使用 Tomcat-6.0.43 非root用户 jsvc模式部署 生产环境 端口80 vsftp

一.安装JDK环境 官方下载链接 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 64位:http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-x64.tar.gz 32位:http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-

vsftpd的基于pam_mysql的虚拟用户配置示例      

第一步:安装vsftpd和mariadb ~]# yum install mariadb-server ~]# yum install vsftpd 因为中CentOS 7平台上/lib64/security/中没有pam_mysql模块驱动,需要编译安装pam_mysql这个模块. 准备编译环境 安装Development Tools 和 service platform Development这两个包组,另外需要安装依赖到的开发包pam-devel,openssl-devel,mariadb

vsftpd基于数据库文件实现虚拟用户管理站点目录

vsftpd基于数据库文件来实现虚拟用户管理站点目录: ftp授权单个系统用户管理(此用户要禁止登陆服务器),虚拟出多个虚拟用户来管理不同的站点目录 一环境:(1)关闭selinux,centos6.8 x_86_64开启防火墙,放开ftp的端口 (2).存放虚拟用户的密码文件[[email protected] vsftpd]# cat /etc/vsftpd/vsftpd_logindrxiaowu ##账户ZkJxu55rt9 ##密码yanyonGZk&aO=+w09xiaowuZk&am

centos7 安装vsftpd安装和配置以及虚拟用户权限分配

系统环境 centos7.3 版本 ftp 根目录 : /data/ftpftp 配置文件目录:/etc/vsftpdftp 虚拟用户权限配置文件目录:/etc/vsftpd/vuser_config 实现目标: 1,匿名用户可以登录,但是不能访问虚拟用户的宿主目录,只能访问共享目录2,虚拟用户对自己的宿主目录有任何权限,且只能在自己宿主目录中操作 1,安装vsftpd和db_load加密工具 1 2 3 4 5 6 #要关闭selinux 和防火墙或者开启允许的端口,不然访问会有问题 sed

vsftpd+pam+mysql实现虚拟用户访问控制

1.安装mysql数据库及开发环境 # yum -y install mysql-server mysql-devel 2.安装pam_mysql-0.7RC1 # tar xf pam_mysql-0.7RC1.tar.gz # cd pam_mysql-0.7RC1 # ./configure --with-mysql=/usr --with-openssl # make # make install # 启动mysql # service mysqld start 3.创建数据库.表及虚拟