FreeBSD 安裝vsftpd 並配置pam_mysql 實現虛擬用戶登陸

1、安裝所需軟件html

一、MySQL 安裝過程請見另外一篇文章mysql

二、vsFTPd 
 cd /usr/ports/ftp/vsftpd
 make install cleanlinux

三、pam_mysql
 cd /usr/ports/security/pam-mysql
 make install clean算法

2、配置sql

一、添加虛擬用戶映射的系統用戶vsftpd,密碼爲空,禁止終端登錄,並設置相應的ftp目錄:數據庫

 # pw useradd vsftpd -s /sbin/nologinapp

 # chmod go+rx /home/vsftpd (使其目錄有寫的權限)

二、創建數據庫vsftp和表users,logside

 #mysql> create database vsftpd;函數

 #mysql> use vsftpd;測試

 #mysql> create table users ( id int AUTO_INCREMENT NOT NULL,name char(63) binary NOT NULL, passwd char(63) binary NOT NULL,primary key(id));

 #mysql> Create table logs ( message Varchar(255),user Varchar(63),pid Int,host Varchar(63), rhost Varchar(63),logtime Datetime) ;

 三、爲mysql添加用戶vsftpd 密碼123456 並設制訪問權限:
 grant select on vsftpd.users to vsftpd@localhost identified by '123456';
 grant all privileges on vsftpd.logs to 
vsftpd@localhost identified by '123456';


四、添加測試的虛擬用戶, 其密碼採起加密存放的方式
 mysql> insert into users(name,passwd) values(’test1′,password(’123456′));
 mysql> insert into users(name,passwd) values(’test2′,password(’123456′));


五、ee /etc/pam.d/vsftpd 文件,刪除裏面的內容添加下面兩行:

 auth            required        /usr/local/lib/pam_mysql.so     config_file=/etc/security/pam_mysql.conf
 account         required        /usr/local/lib/pam_mysql.so     config_file=/etc/security/pam_mysql.conf
 注意:上面兩行沒有回車符,空格用tab代替(不用tab代替也能夠,我的喜愛)

六、創建pam_mysql配置文件

 ee /etc/security/pam_mysql.conf 填入下面內容:

 users.host=localhost
 users.database=vsftpd   (數據庫庫名)
 users.db_user=vsftpd        (數據庫用戶名)
 users.db_passwd=123456  (數據庫訪問密碼)
 users.table=users
 users.user_column=name
 users.password_column=passwd
 users.password_crypt=2
 verbose=1
 log.enabled=1
 log.table=logs
 log.message_column=message
 log.pid_column=pid
 log.user_column=user
 log.host_column=host
 log.rhost_column=rhost
 log.time_column=logtime

 說明:用戶信息表密碼列crypt加密方式支持下列加密方式:
 crypt=0,口令以明文方式(不加密)。
 crypt=1,口令使用系統的DES加密方式加密。
 crypt=2,口令通過MySQL的password()函數加密。
 crypt=3,口令通過MySQL的md5()函數加密。

 注:若是要使用3方式進行加密,務必把/etc/my.cnf裏面的old_passwords=1改爲old_passwords=0,不然mysql會使用老的加密算法,致使和pam_mysql.so密碼驗證不成功。

七、修改vsftpd.conf使其從mysql認證

 # ee /usr/local/etc/vsftpd.conf

 內容以以下
 
listen=YES

background=YES

chroot_local_user=YES

guest_enable=YES

guest_username=vsftpd

pam_service_name=vsftpd

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

 ftpd_banner=Welcome to this ftp server!

secure_chroot_dir=/usr/local/share/vsftpd/empty

user_config_dir=/etc/vsftpd_users

  以上配置請自行探索。

八、限制用戶目錄和權限
 # ee /usr/local/etc/vsftpd.conf 在vsftpd.conf中添加一行:
 user_config_dir=/etc/vsftpd_users 
 mkdir /etc/vsftpd_users (在/etc目錄中創建vsftpd_users目錄)
 cd /etc/vsftpd_users (進入vsftpd_users目錄新建用戶配置文件)
 # ee test1 (文件名必需同用戶名一至)輸入配置信息:
 local_root=/ftp/test1 (限制用戶目錄爲/ftp/test1)
 anon_upload_enable=YES (開放用戶上傳權限)
 anon_mkdir_write_enable=YES (可新建文件夾)
 anon_other_write_enable=YES (可刪除文件)

 保存退出

 mkdir /ftp/test1 爲FTP用戶建立根目錄
 chmod -R vsftpd /ftp/test1 分配權限

啓動vsftpd:/usr/local/libexec/vsftpd &

 如今即可以用test1密碼123456登陸並上傳文件了.

reference:

http://www.diybl.com/course/6_system/linux/Linuxjs/20090311/160564.html

http://www.xxlinux.com/linux/article/development/database/20051229/793.html

http://fanqiang.chinaunix.net/app/ftp/2005-09-15/3668.shtml

相關文章
相關標籤/搜索