Linux下vsftpd+mysql虛擬使用者作法(轉)

ba發表於2007-08-12
Linux下vsftpd+mysql虛擬使用者作法(轉)[@more@]Debian Linux下vsftpd+mysql虛擬使用者作法
今天閒來無事做了個ftp,原因很簡單就是為了能在別處看到的好東西直接放到我的機器上,嘿嘿!linux下選擇ftp伺服器還真是不容易,經過一陣思索後就選擇了vsftpd,理由就是它號稱是linux下最安全的ftp伺服器還有還有好多的大型站點都用它來做伺服器(這樣用起來也比較有面子 :) )。為了怕在我輸入密碼時被別人偷看到然後登入我機器亂搞,在加上我本來就討厭系統有那麼多的使用者(其實也是像顯示自己的手平),所以我決定採用虛擬使用者,因為機器中裝有Mysql,於是我就想將虛擬使用者資料放在mysql中,好了,就侃到這裡,下面進入正題!

第一步:

安裝vsftpd

apt-get install vsftpd (Debian就是爽啊!)

系統會自動生成一個配置檔案和一個ftp使用者供匿名使用者使用,vsftpd使用PAM方式來驗證虛擬使用者,因為虛擬使用者的資訊儲存在資料庫中,所以我們還需要一個能夠讀取資料庫內容的本地使用者,而且還需要設定它的本地目錄:

#mkdir /var/ftp

#useradd -d ftpguest /var/ftp

#chown ftpguest.nogroup /var/ftp

第二步:安裝mysql

apt-get install mysql-server mysql-clent

建立資料庫,並新增使用者

#mysql -p mysql>create ftpu;

mysql>use ftpu;

mysql>create table user(name char(20) binary,passwd char(20) binary);

mysql>insert into user (name,passwd) values ('test1',password('1234567'));

mysql>insert into user (name,passwd) values ('test2',password('7654321'));

mysql>quit

讓ftpguest能訪問ftpu和表user:

#mysql -u root mysql -p mysql>grant select on ftpu.user to ftpguest@localhost identified by '123456';

mysql>quit

第三步:因為vsftpd是透過PAM驗證,所以我們還需要一個mysql透過PAM驗證的包,在Debian下它叫做libpam-mysql

apt-get install libpam-mysql

然後開啟vsftpd的PAM驗證:

#vi /etc/pam.d/vsftpd

將以前的內容註釋掉,然後加入以下內容:

auth required pam_mysql.so user=ftpguest passwd=123456 host=localhost db=ftpu table=user usercolumn=name passwdcolumn=passwd crypt=2

account required pam_mysql.so user=ftpguest passwd=123456 host=localhost db=ftpu table=user usercolumn=name passwdcolumn=passwd crypt=2

上面的內容應該能看明白吧,那個crypt=2表示經過mysql的password()機密後的東西!

第四步:修改vsftpd.conf檔案

#vi /etc/vsftpd.conf

加入:

uest_enable=YES

guest_username=ftpguest

#表示ftpguest為vsftp的虛擬使用者

virtual_use_local_privs=YES

#虛擬使用者與本地使用者有相同的許可權

write_enable=YES

anon_upload_enable=YES

anon_other_write_enable=YES

#允許虛擬使用者上傳,修改和刪除檔案

chroot_local_user=YES

#虛擬使用者只能訪問自己的目錄

anonymous_enable=NO

local_enable=YES

#關閉匿名使用者訪問,開啟本地使用者訪問

第五步:

本來來到第四步已經完成了,可是後來一想,不對,那要是每次上傳的東西都不同,到時把那個目錄弄得亂七八糟的怎麼管理啊,能不能為每個虛擬使用者建立一個目錄呢,比如說將music使用者上傳的檔案放在放在~/music下,將doc使用者上傳的檔案放在~/doc下呢?

能!當然能了,看看我怎麼做?

首先在資料庫中新增music和doc兩個虛擬使用者接下來:

#mkdir /etc/vsftpd_user_conf

#cd /etc/vsftpd_user_conf

#touch music

#echo "local_root=/home/username/music" > music

#touch doc

#echo "local_root=/home/username/doc" > doc

#mkdir /home/username/music

#chown ftpguest.nogroup /home/username/music

#chmod 600 /home/username/music

#chown ftpguest.nogroup /home/username/doc

#chmod 600 /home/username/doc

然後在vsftpd.conf中加入: user_config_dir=/etc/vsftpd_user_conf

大功告成,你明白了嗎?

轉貼

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-952384/,如需轉載,請註明出處,否則將追究法律責任。

相關文章