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

[经验分享] CentOS6.4 实现基于mysql的vsftpd-Share your knowledge …

[复制链接]

尚未签到

发表于 2018-9-28 08:35:39 | 显示全部楼层 |阅读模式
  大纲
  一、安装所需要的软件包
  二、创建虚拟用户账号
  三、配置vsftpd
  四、启动vsftpd服务并查看
  五、关闭防火墙与SElinux
  六、配置虚拟用户有不同的访问权限
  一、安装所需要的软件包
  1. 安装开发环境
[root@ftp ~]#  yum -y groupinstall "Development Tools" "Development Libraries"  2. 安装mysql数据库
[root@ftp ~]# yum -y install mysql-server mysql-devel  
[root@ftp pam.d]# chkconfig mysqld on #开机自启动
  
[root@ftp pam.d]# chkconfig mysqld --list
  
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
  [root@ftp pam.d]#
  3. 安装 pam_mysql
[root@ftp ~]# wget http://sourceforge.net/projects/pam-mysql/files/latest/download/pam_mysql-0.7RC1.tar  
[root@ftp ~]# tar xf pam_mysql-0.7RC1.tar.gz
  
[root@ftp ~]# cd pam_mysql-0.7RC1
  
[root@ftp pam_mysql-0.7RC1]# ./configure --with-mysql=/usr --with-openssl
  
[root@ftp pam_mysql-0.7RC1]# make && make install
  编译过程中出错:
configure: error: Cannot find pam headers. Please check if your system is ready for pam module development.  解决方法:
[root@ftp pam_mysql-0.7RC1]# yum install -y pam-devel  说明:安装完之后,相应的库文件被安装在/lib/security目录中,
[root@ftp ~]# cd /lib/security/  
[root@ftp security]# ls
  
pam_mysql.la  pam_mysql.so
  
[root@ftp security]#
  4. 安装 vsftpd
[root@ftp pam_mysql-0.7RC1]# yum -y install vsftpd  
[root@ftp pam.d]# chkconfig vsftpd on #开机自启动
  
[root@ftp pam.d]# chkconfig vsftpd --list
  
vsftpd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
  
[root@ftp pam.d]#
  二、创建虚拟用户账号
  首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库。
  1. 启动mysql数据库
[root@ftp ~]# service mysqld start  
Starting mysqld:                                           [  OK  ]
  
[root@ftp ~]#
  2. 登录并创建数据库及相关表
[root@ftp ~]# mysql  
Welcome to the MySQL monitor.  Commands end with ; or \g.
  
Your MySQL connection>  
Server version: 5.1.69 Source distribution
  
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
  
Oracle is a registered trademark of Oracle Corporation and/or its
  
affiliates. Other names may be trademarks of their respective
  
owners.
  
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  (1). 创建数据库vsftpd
mysql> create database vsftpd;  
Query OK, 1 row affected (0.00 sec)
  (2). 创建授权
mysql> grant select on vsftpd.* to vsftpd@localhost>
Query OK, 0 rows affected (0.01 sec)

  
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1>  
Query OK, 0 rows affected (0.00 sec)
  
mysql> flush privileges;
  
Query OK, 0 rows affected (0.00 sec)
  (3). 创建users表
mysql> use vsftpd;  
Database changed
  
mysql>  create table users (

  
-> >  
->  name char(20) binary NOT NULL,
  
->  password char(48) binary NOT NULL,
  
->  primary key(id)
  
->  );
  
Query OK, 0 rows affected (0.02 sec)
  
mysql> show databases;
  
+--------------------+
  
| Database           |
  
+--------------------+
  
| information_schema |
  
| mysql              |
  
| test               |
  
| vsftpd             |
  
+--------------------+
  
4 rows in set (0.00 sec)
  (4). 测试vsftpd是否可以正常查询数据库信息
  3. 添加测试的虚拟用户
  说明:根据需要添加所需要的用户,需要说明的是,这里将其密码采用明文格式存储,原因是pam_mysql的password()函数与MySQL的password()函数可能会有所不同。
mysql> insert into users(name,password) values('tom','123456');  
Query OK, 1 row affected (0.01 sec)
  
mysql> insert into users(name,password) values('jerry','654321');
  
Query OK, 1 row affected (0.00 sec)
  
mysql> select * from users;
  
+----+-------+----------+

  
|>  
+----+-------+----------+
  
|  1 | tom   | 123456   |
  
|  2 | jerry | 654321   |
  
+----+-------+----------+
  
2 rows in set (0.00 sec)
  
mysql>
  注:在vsftpd数据库中创建表users,包含name和password两个字段,在表中插入tom和jerry两条用户的记录,其中123456和654321为密码,查询用户信息。
  三、配置vsftpd
  1. 建立pam认证所需文件
[root@ftp ~]# cd /etc/pam.d/  
[root@ftp pam.d]# ls
  
chfn         fingerprint-auth     passwd            run_init           smtp          sudo            vsftpd
  
chsh         fingerprint-auth-ac  password-auth     runuser            smtp.postfix  sudo-i
  
config-util  login                password-auth-ac  runuser-l          sshd          su-l
  
crond        newrole              polkit-1          smartcard-auth     ssh-keycat    system-auth
  
cvs          other                remote            smartcard-auth-ac  su            system-auth-ac
  
[root@ftp pam.d]# vim vsftpd.mysql
  
auth required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users usercolumn
  
=name passwdcolumn=password crypt=0
  
account required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users usercol
  
umn=name passwdcolumn=password crypt=0
  说明:
  其中user 是读取mysql数据库时使用的用户名,passwd 为其对应的密码,host指定mysql数据库所在的主机,db指定存放虚拟用户的数据库,table指定存放虚拟用户的表,usercolumn、passwdcolumn是指定表中存放用户名和密码的字段。
  crypt指定密码字段是以什么方式存储到数据库中
  (1)crypt=0表示以明文保存密码
  (2)crypt=1表示使用crypt( )函数加密保存密码
  (3)crypt=2表示使用mysql中的password( )函数加密保存密码
  (4)crypt=3表示使用md5的方式保存密码
  2. 建立虚拟用户映射的系统用户及对应的目录
[root@ftp pam.d]# useradd -s /sbin/nologin -d /var/ftproot vuser #-d 指定家目录的位置 -s 指定用户登录的shell,如果为用户分配的shell是/sbin/nologin,则该用户是不能登录到系统的。  
[root@ftp pam.d]# chmod go+rx /var/ftproot #修改家目录权限
  3. 修改/etc/vsftpd/vsftpd.conf 中的选项
anonymous_enable=YES  
local_enable=YES
  
write_enable=YES
  
anon_upload_enable=NO
  
anon_mkdir_write_enable=NO
  
chroot_local_user=YES
  4. 添加以下选项(增加guest访问)
guest_enable=YES  
guest_username=vuser
  5. 修改pam_service_name选项的值
pam_service_name=vsftpd.mysql  四、启动vsftpd服务并验证
  1. 启动vsftpd服务
[root@ftp pam.d]# service vsftpd start  
Starting vsftpd for vsftpd:                                [  OK  ]
  
[root@ftp pam.d]#
  2. 查看端口情况
[root@ftp pam.d]# netstat -ntulp | grep :21  
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      17662/vsftpd
  
[root@ftp pam.d]#
  3. 使用虚拟用户登录,验正配置结果,以下为本机的命令方式测试,你也可以在其它Windows上用IE或者FTP客户端工具登录验
  (1). tom用户登录
[root@ftp pam.d]# yum install -y ftp  
[root@ftp pam.d]# ftp localhost
  
[root@ftp pam.d]# ftp localhost
  
Trying ::1...
  
ftp: connect to address ::1Connection refused
  
Trying 127.0.0.1...
  
Connected to localhost (127.0.0.1).
  
220 (vsFTPd 2.2.2)
  
Name (localhost:root): tom
  
331 Please specify the password.
  
Password:
  
230 Login successful. #登录成功
  
Remote system type is UNIX.
  
Using binary mode to transfer files.
  
ftp> dir
  
227 Entering Passive Mode (127,0,0,1,102,198).
  
150 Here comes the directory listing.
  
226 Directory send OK.
  
ftp>
  (2). jerry 用户登录
[root@ftp pam.d]# ftp localhost  
Trying ::1...
  
ftp: connect to address ::1Connection refused
  
Trying 127.0.0.1...
  
Connected to localhost (127.0.0.1).
  
220 (vsFTPd 2.2.2)
  
Name (localhost:root): jerry
  
331 Please specify the password.
  
Password:
  
230 Login successful.
  
Remote system type is UNIX.
  
Using binary mode to transfer files.
  
ftp> dir
  
227 Entering Passive Mode (127,0,0,1,161,81).
  
150 Here comes the directory listing.
  
226 Directory send OK.
  
ftp>
  (3). Windows 下测试
DSC0000.jpg

  五、关闭防火墙与SElinux
  说明:博友可以看到我们这里可以登录,但有的朋友登录不了,是因为防火墙与SELinux,我们这里先关闭
[root@ftp ~]# service iptables stop  
[root@ftp ~]# service ip6tables stop
  
[root@ftp ~]# setenforce 0
  
setenforce: SELinux is disabled
  
[root@ftp ~]# getenforce
  
Disabled
  这样就可以正常登录了,嘿嘿!
  六、配置虚拟用户有不同的访问权限
  说明:vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限, 每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录, 只需要在vsftpd.conf指定其路径及名称即可。
  1、配置vsftpd为虚拟用户使用配置文件目录
[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf  
添加如下选项
  
user_config_dir=/etc/vsftpd/vusers_dir
  2、创建所需要目录,并为虚拟用户提供配置文件
[root@ftp ~]# mkdir /etc/vsftpd/vusers_dir/  
[root@ftp ~]# cd /etc/vsftpd/vusers_dir/
  
[root@ftp vusers_dir]# touch tom jerry
  
[root@ftp vusers_dir]# ls
  
jerry  tom
  
[root@ftp vusers_dir]#
  3、配置虚拟用户的访问权限
  虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,可以修改/etc/vsftpd/vusers/tom文件,在里面添加如下选项即可。
[root@ftp vusers_dir]# vim tom  
anon_upload_enable=YES
  
[root@ftp vusers_dir]# vim jerry
  
anon_mkdir_write_enable=YES
  4. 修改 /etc/vsftpd/vsftpd.conf 配置
[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf  
anon_upload_enable=NO
  
anon_mkdir_write_enable=NO
  
[root@ftp ~]# service vsftpd restart
  
Shutting down vsftpd:                                      [  OK  ]
  
Starting vsftpd for vsftpd:                                [  OK  ]
  
[root@ftp ~]#
  5. 测试
  (1). tom登录测试
DSC0001.jpg

  (2). jerry 登录测试
DSC0002.jpg

  所有演示全部结束!^_^ ……



运维网声明 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.yunweiku.com/thread-603042-1-1.html 上篇帖子: 如何对zabbix mysql做分区表 下篇帖子: MySQL 优化(四)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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