centos vsftp mysql_CentOS6.4 实现基于mysql的vsftpd
大綱一、安裝所需要的軟件包
二、創建虛擬用戶賬號
三、配置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 id is 3
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). 創建數據庫vsftpdmysql> create database vsftpd;
Query OK, 1 row affected (0.00 sec)
(2). 創建授權mysql> grant select on vsftpd.* to vsftpd@localhost identified by '123456'; #給vsftpd授權
Query OK, 0 rows affected (0.01 sec)
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by '123456'; #給vsftpd授權
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 (
-> id int AUTO_INCREMENT NOT NULL,
-> 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;
+----+-------+----------+
| id | name | password |
+----+-------+----------+
| 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 下測試
五、關閉防火墻與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登錄測試
(2). jerry 登錄測試
所有演示全部結束!^_^ ……
總結
以上是生活随笔為你收集整理的centos vsftp mysql_CentOS6.4 实现基于mysql的vsftpd的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用python绘制好看的图形_怎么用Py
- 下一篇: 查看so库中是否有某个定义_论Linux