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