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.* to vsftpd@localhost identified by ' 
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by ' 
mysql> flush privileges;

mysql> use vsftpd;
mysql> create table users (
 id int AUTO_INCREMENT NOT NULL,
 name char(20) binary NOT NULL,
password char(48) binary NOT NULL,
 primary key(id)
 );

2、添加测试的虚拟用户

根据需要添加所需要的用户,需要说明的是,这里将其密码为了安全起见应该使用PASSWORD函数加密后存储。

mysql> insert into users(name,password) values('magedu1',password('magedu'));mysql> insert into users(name,password) values('magedu2',password('magedu'));

三、配置vsftpd

1.建立pam认证所需文件

#vi /etc/pam.d/vsftpd.mysql添加如下两行
auth required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

2.修改vsftpd的配置文件,使其适应mysql认证

建立虚拟用户映射的系统用户及对应的目录
useradd -s /sbin/nologin -d /var/ftproot vuser
chmod go+rx /var/ftproot

请确保/etc/vsftpd.conf中已经启用了以下选项
anonymous_enable=NOlocal_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES

而后添加以下选项
guest_enable=YES
guest_username=vuser

并确保pam_service_name选项的值如下所示
pam_service_name=vsftpd.mysql

四、启动vsftpd服务

service vsftpd startchkconfig vsftpd on

查看端口开启情况

netstat -tnlp |grep :21tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      23286/vsftpd

使用虚拟用户登录,验正配置结果

ftp 10.0.0.2 
[root@localhost ~]# ftp 10.0.0.2
Connected to 10.0.0.2 (10.0.0.2).
220 (vsFTPd 2.2.2)
Name (10.0.0.2:root): magedu1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd 
257 "/"

[root@localhost ~]# ftp 10.0.0.2
Connected to 10.0.0.2 (10.0.0.2).
220 (vsFTPd 2.2.2)
Name (10.0.0.2:root): magedu2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pws 
?Invalid command
ftp> pwd 
257 "/"

五、配置虚拟用户具有不同的访问权限

1、配置vsftpd为虚拟用户使用配置文件目录

# vim vsftpd.conf添加如下选项
user_config_dir=/etc/vsftpd/vusers_config

2、创建所需要目录,并为虚拟用户提供配置文件

mkdir /etc/vsftpd/vusers_config/cd /etc/vsftpd/vusers_config/touch  magedu1 magedu2

3、配置虚拟用户的访问权限

修改/etc/vsftpd/vusers_config/ magedu1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
修改/etc/vsftpd/vusers_config/ magedu2
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

4、验证结果

[root@localhost vusers_config]# ftp 10.0.0.2
Connected to 10.0.0.2 (10.0.0.2).
220 (vsFTPd 2.2.2)
Name (10.0.0.2:root): magedu1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls 
227 Entering Passive Mode (10,0,0,2,114,1).
150 Here comes the directory listing.
drwx------    2 500      500          4096 Sep 16 15:45 cd
226 Directory send OK.
ftp> mkdir ccd 
257 "/ccd" created
ftp> exit
221 Goodbye.

[root@localhost vusers_config]# ftp 10.0.0.2
Connected to 10.0.0.2 (10.0.0.2).
220 (vsFTPd 2.2.2)
Name (10.0.0.2:root): magedu2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir cd 
550 Permission denied.

原创文章,作者:N21_ Dominic,如若转载,请注明出处:http://www.178linux.com/47042

(0)
N21_ DominicN21_ Dominic
上一篇 2016-09-19 13:48
下一篇 2016-09-19 13:48

相关推荐

  • 小懒豆-运维28-01

    1.计算机的组成及其功能
    2.linux的发行版,并描述差异及其联系
    3.说明linux的哲学思想,并按照自己的理解进行解释描述
    4.linux的命令使用格式,并介绍下列命令 ifconfig echo tty startx export pwd history shundown poweroff reboot hwclock date的
    5.如何获取linxux的帮助命令
    6.简述fhs(Filesystem hierarchy standard)

    2017-12-03
  • 优云软件:双态运维下,老司机是怎么玩CMDB的?

    行业内有个科技公司,CMDB前后建设12年,重构了N次,一言不合就重构,我深深的被这种屡拆屡战,初心不改精神所折服。我真心想问下做CMDB的兄弟,各位是怎么熬过来的?请不要回避,其实我们都曾被这样虐过! 近几年我司承建国内很多传统行业的CMDB项目,坦白的说,随着互联网+热潮的冲击,因很多传统企业也慢慢的在转变业务,把很多传统型的业务互联网化,或者开辟新型业…

    2016-08-05
  • 习题

    1、找出ifconfig命令结果中本机的所有IPv4地址 2、查出分区空间使用率的最大百分比值 3、查出用户UID最大值的用户名、UID及shell类型 4、查出/tmp的权限,以数字方式显示 5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序 6、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式) 7、显示/etc/…

    Linux干货 2016-08-07
  • 磁盘管理

    磁盘,分区,文件系统

    Linux干货 2017-12-02
  • 如何使用正则表达式

    正则表达式(Regular Expression)就是使用简单的字符按照预先设定的规则来完成复杂的功能,说白了,正则表达式是一种字符串的匹配方式,就是用预先设定好的规则来描述我们想要表达的内容,它是由普通字符以及元字符组成的字符串,其中元字符不表示本身的意义,而是用于表达控制或通配等功能。 为什么要用这个东西那,我想,每一个学习计算机的人都应该明白,计算机就…

    Linux干货 2015-10-27
  • 作业——2016-10-17

    1 生产环境发现一台服务器系统时间产生偏差,造成服务异常,请帮忙校正。     将系统时间同步到硬件时间的命令是hwclock -s 2 生产有一个数据同步脚本需要执行很长时间,怎样做到无人值守,在管理工具退出的情况下,脚本依然能正常运行。     screen -S work  进去后开始做工作,暂时离开时…

    Linux干货 2016-10-18