天天看點

vsftpd+pam+mysql實作ftp建構

一、安裝所需要程式

1、事先安裝好開發環境和mysql資料庫;

<a href="http://blog.51cto.com/attachment/201304/230507417.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201304/230536517.png" target="_blank"></a>

首先配置好yum的server.repo檔案

[root@localhost yum.repos.d]# cd  

[root@localhost ~]# mkdir /mnt/cdrom  

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/  

//上邊是挂載鏡像,以便使用yum  

[root@localhost ~]# cd /etc/yum.repos.d/  

[root@localhost yum.repos.d]# vim server.repo  

//添加内容  

[base]  

name=Instructor Server Repository  

baseurl=file:///mnt/cdrom/Server //這裡的鏡像為本地挂載的  

gpgcheck=0 

[root@localhost ~]# yum -y install mysql-server mysql-devel  

[root@localhost ~]# service mysqld start  

[root@localhost ~]# yum -y groupinstall "Development Tools" "Development Libraries"  

2.安裝pam_mysql-0.7RC1

 這裡筆者在事先準備好的壓縮包拉近linux中,大家可以到網上下載下傳這個壓縮包。來按照下面的步驟實行:

<a href="http://blog.51cto.com/attachment/201304/230645990.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201304/230716381.png" target="_blank"></a>

然後關掉。回到linux中。ls檢視可以看到檔案已經在家目錄中了。

[root@localhost ~]# tar zxvf pam_mysql-0.7RC1.tar.gz  

[root@localhost ~]# cd pam_mysql-0.7RC1  

[root@localhost pam_mysql-0.7RC1] # ./configure --with-mysql=/usr --with-openssl  

[root@localhost pam_mysql-0.7RC1] # make  

[root@localhost pam_mysql-0.7RC1] # make install  

3.安裝vsftpd

[root@localhost pam_mysql-0.7RC1]# yum -y install vsftpd  

// 注:這個時候需要檢視下selinux服務是否開啟,因為他的開啟會對後邊的服務産生影響   

[root@localhost ~]# getenforceEnforcing  

[root@localhost ~]# setenforce 0  

[root@localhost ~]# getenforcePermissive  

//當然。這裡也需要到vim /etc/selinux/config将其中的SELINUX=enforcing替換為SELINUX=permissive   

二、建立虛拟使用者賬号

1.準備資料庫及相關表

首先請確定mysql服務已經正常啟動。而後,按需要建立存儲虛拟使用者的資料庫即可,這裡将其建立為vsftpd資料庫。

mysql&gt; create database vsftpd;  

mysql&gt; grant select on vsftpd.* to vsftpd@localhost identified by 'doubao';  

mysql&gt; grant select on vsftpd.* to [email protected] identified by 'doubao';  

mysql&gt; flush privileges;  

mysql&gt; use vsftpd;  

mysql&gt; create table users (  

    -&gt; id int AUTO_INCREMENT NOT NULL,  

    -&gt; name char(20) binary NOT NULL,  

    -&gt; password char(48) binary NOT NULL,  

    -&gt; primary key(id)  

    -&gt; );  

2、添加測試的虛拟使用者

根據需要添加所需要的使用者,需要說明的是,這裡将其密碼采用明文格式存儲,原因是pam_mysql的password()函數與MySQL的password()函數可能會有所不同。

mysql&gt; insert into users(name,password) values('tom','magedu');  

mysql&gt; insert into users(name,password) values('jerry','magedu');  

mysql&gt;\q  

三、配置vsftpd

1.建立pam認證所需檔案

[root@localhost ~]# vi /etc/pam.d/vsftpd.mysql  

添加如下兩行  

auth required /lib/security/pam_mysql.so user=vsftpd passwd=doubao host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0 

account required /lib/security/pam_mysql.so user=vsftpd passwd=doubao host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0 

2.修改vsftpd的配置檔案,使其适應mysql認證

建立虛拟使用者映射的系統使用者及對應的目錄

[root@localhost ~]#useradd -s /sbin/nologin -d /var/ftproot vuser  

[root@localhost ~]#chmod go+rx /var/ftproot  

//請確定/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 

//而後添加以下選項  

guest_enable=YES 

guest_username=vuser 

//并確定pam_service_name選項的值如下所示  

pam_service_name=vsftpd.mysql  

四、啟動vsftpd服務

[root@localhost ~]# service vsftpd start  

Starting vsftpd for vsftpd:                                [ OK ]  

[root@localhost ~]# chkconfig vsftpd on  

//檢視端口開啟情況  

[root@localhost ~]# netstat -tnlp |grep :21  

tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      11336/vsftpd  

使用虛拟使用者登入,驗正配置結果,以下為本機的指令方式測試,你也可以在其它Win Box上用IE或者FTP用戶端工具登入驗正

<a href="http://blog.51cto.com/attachment/201304/230800893.png" target="_blank"></a>

[root@localhost ~]# ftp localhost  

<a href="http://blog.51cto.com/attachment/201304/230811434.png" target="_blank"></a>

五、配置虛拟使用者具有不同的通路權限

vsftpd可以在配置檔案目錄中為每個使用者提供單獨的配置檔案以定義其ftp服務通路權限,每個虛拟使用者的配置檔案名同虛拟使用者的使用者名。配置檔案目錄可以是任意未使用目錄,隻需要在vsftpd.conf指定其路徑及名稱即可。

1、配置vsftpd為虛拟使用者使用配置檔案目錄

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf  

//添加如下選項  

user_config_dir=/etc/vsftpd/vusers_dir   

2、建立所需要目錄,并為虛拟使用者提供配置檔案

[root@localhost ~]# mkdir /etc/vsftpd/vusers_dir/  

[root@localhost ~]# cd /etc/vsftpd/vusers_dir/  

[root@localhost ~]# touch tom jerry  

3、配置虛拟使用者的通路權限

虛拟使用者對vsftpd服務的通路權限是通過匿名使用者的相關指令進行的。比如,如果需要讓tom使用者具有上傳檔案的權限,可以修改/etc/vsftpd/vusers/tom檔案,在裡面添加如下選項即可。

anon_upload_enable=YES

本文轉自 陳延宗 51CTO部落格,原文連結:http://blog.51cto.com/407711169/1179601,如需轉載請自行聯系原作者