设为首页 收藏本站
查看: 245|回复: 0

[经验分享] CentOS6.3+vsftpd+mysql+pam_mysql实现虚拟用户管理的ftp服务器

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-3-14 08:25:45 | 显示全部楼层 |阅读模式
CentOS6.3+vsftpd+mysql+pam_mysql实现虚拟用户管理的ftp服务器



一、准备相关软件以及开发环境

1、安装vsftpd mysql-server mysql-devel pam-devel

# yum -y install vsftpdmysql-server mysql-devel pam-devel

# yum -y groupinstall "DevelopmentTools"


2、编译安装pam_mysql认证模块(库)

先下载pam_mysql:

#wgethttps://sourceforge.net/projects ... o-check-certificate



编译安装pam_mysql

# tar -xf pam_mysql-0.7RC1.tar.gz

# cd pam_mysql-0.7RC1

# ./configure --with-mysql=/usr

# make

# make install



二、创建虚拟用户帐号

1、准备数据库及表

启动mysqld

# service mysqld start

#mysql

mysql> create database vsftpd;

mysql> grant select on vsftpd.* to'vsftpd'@'localhost' identified by 'vsftpd123';

mysql> grant select on vsftpd.* to'vsftpd'@'127.0.0.1' identified by 'vsftpd123';

mysql> flush privileges;



mysql> use vsftpd;

mysql> CREATE TABLE users (id INT AUTO_INCREMENTNOT NULL,

    -> nameCHAR(20) BINARY NOT NULL,

    ->password CHAR(64) BINARY NOT NULL,

-> PRIMARY KEY(id));



2、添加虚拟用户

根据具体情况添加用户,由于pam_mysql的password()函数与MySQL的password()函数算法可能不太相同,此处使用明文密码。有兴趣的可以测试其它加密方式,如md5

mysql> insertinto users(name,password) values ('user1','user123'),('user2','user123');



3、测试mysql的用户及表是否有效

# mysql -uvsftpd-p

mysql> showdatabases;

+--------------------+

| Database           |

+--------------------+

|information_schema |

| test               |

| vsftpd             |

+--------------------+

3 rows in set(0.00 sec)

mysql> usevsftpd;

mysql> select *from users;

+----+-------+----------+

| id | name  | password |

+----+-------+----------+

|  1 | user1 | user123  |

|  2 | user2 | user123  |

+----+-------+----------+

2 rows in set(0.00 sec)

以上结果证明,数据库是正常可用的。



三、配置vsftpd

1、建立pam认证文件

# vim /etc/pam.d/vsftpd.mysql

添加以下两行

auth required /lib/security/pam_mysql.so user=vsftpdpasswd=vsftpd123 host=localhost db=vsftpd table=users usercolumn=namepasswdcolumn=password crypt=0

account required /lib/security/pam_mysql.souser=vsftpd passwd=vsftpd123 host=localhost db=vsftpd table=usersusercolumn=name passwdcolumn=password crypt=0



内容解释:

auth 权限认证

required 必需通过认证

/lib/security/pam_mysql.so调用库文件

user=vsftpd 登录数据库用户名

passwd=vsftpd123 登录数据库密码

host=localhost 数据库主机地址,此处表示本机

db=vsftpd 数据库名称

table=users 用户帐号的表名

usercolumn=name 用户名字段

passwdcolumn=password 密码字段

crypt=0 表示密码的加密方式,0为明文,2为password函数加密



2、修改vsftpd.conf文件

# vim/etc/vsftpd/vsftpd.conf

请确保/etc/vsftpd.conf中已经启用了以下选项

anonymous_enable=NO

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES



而后添加以下选项

guest_enable=YES

guest_username=ftpuser



并确保pam_service_name选项的值如下所示

pam_service_name=vsftpd.mysql



然后添加虚拟用户所需要映射的系统用户ftpuser

# useradd -s/sbin/nologin -d /home/ftp ftpuser #没有系统登录权限,家目录为ftp

# chmod go+rx/home/ftp #添加其它用户组的权限为读执行



四、启动服务

# service vsftpd start

# chkconfig vsftpd on

登录测试:ftp://IP

可以用各种ftp客户端测试,包括浏览器,windows的资源管理器(我的电脑)





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


vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。



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



# vim vsftpd.conf

添加如下选项

user_config_dir=/etc/vsftpd/vusers_config



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



# mkdir/etc/vsftpd/vusers_config/

# cd /etc/vsftpd/vusers_config/

# touch user1user2



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



虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让user1用户具有上传文件的权限,可以修改/etc/vsftpd/ vusers_config/user1文件,在里面添加如下选项即可。

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES


六、vsftpd基础知识

vsftpd:

/etc/vsftpd 配置文件目录

/etc/init.d/vsftpd服务脚本

/usr/sbin/vsftpd主程序

/var/ftp 默认的数据文件目录,ftp根目录不能有写权限,可建立子目录

  支持虚拟用户(基于PAM实现用户认证)

    PAM的主要文件

     /etc/ram.d/配置文件目录

     /lib64/security/库文件目录



ftp用户类型

  系统用户

匿名用户--> 映射到系统用户

虚拟用户 --> 映射到系统用户



  默认情况下,如果允许系统用户直接登录,则其能切到大部分系统其它目录,而且还是明文传输的,这是非常危险的。



上传下载

/var/ftp ftp用户的家目录

   匿名用户访问目录



文件服务权限=文件系统权限+文件共享权限



/etc/vsftpd/vsftpd.conf配置文件解释

   anonymous_enable=YES   匿名用户,默认支持

   local_enable=YES     系统用户,默认支持

   write_enable=YES     系统用户上传文件,默认支持

anon_upload_enable=YES       匿名用户上传,默认禁止

   anon_mkdir_write_enable=YES    匿名用户创建目录,默认禁止

   anon_other_write_enable=YES    匿名用户删除文件,默认禁止

   dirmessage_enable=YES   在目录下建立.message文件写提示内容

   xferlog_enable=YES      记录传输日志

   xferlog_std_format=YES  传输日志标准格式,最好禁止

   xferlog_file=/var/log/xferlog  记录传输日志的目录

   idle_session_timeout=600  会话连接超时时间,单位秒,默认禁止

   chroot_list_enable=YES   禁固用户只能在家目录活动

chroot_list_file=/etc/vsftpd/chroot_list  禁固用户列表文件,手动创建

chroot_local_user=YES   禁固所有用户只能在家目录活动,默关

listen=YES                                        把FTP服务定义为独立守护进程

  守护进程:

    独立守护进程:适用用户量比较大,会话时间长

        瞬时守护进程:由xinetd代为管理

    pam_service_name=vsftpd    pam管理的配置文件,目录/etc/pam.d/vsftpd

   userlist_enable=YES    启用/etc/vsftpd/user_list文件

    userlist_deny=YES    禁止/etc/vsftpd/user_list文件用户登录

    guest_enables=YES    支持虚拟用户

   guest_username=vuser   虚拟用户所映射到的系统用户名

   max_clients          vsftpd服务同时最大支持的连接用户数

           max_per_ip                                     每个IP同时支持的最大连接用户数

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-190435-1-1.html 上篇帖子: Linux/Unix工具与正则表达式的POSIX规范 下篇帖子: 在linux上安装google及修改hosts
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表