vsftp本地用戶,虛擬用戶,匿名用戶同時工作

vsftpd+mysql  實現本地用戶,匿名用戶,虛擬用戶同時工作



大綱

1.安裝vsftpd mysql  pam-mysql

2.添加虛擬用戶(使用本地數據庫和數據庫服務器)

3.實現本地用戶,匿名用戶,虛擬用戶同時工作

4.說下vsftpd.conf文件的內容

一、安裝

先說下環境我是在centos 5.6下做的  安裝vsftpd mysql

vsftpdmysql是使用yum源安裝的,pam_mysql使用編譯安裝的是因爲我沒找到rpm軟件包!!!

首先安裝vsftpd+mysql  以及必要軟件(pam_mysql db4*

yum install vsftpdmysql  db4* -y

編譯安裝需要用以下軟件:

yum install gcc gcc-c++ pam-devel mysql-devel    也還需要更多的開發工具,到時只需使用

使用下面的命令與地址下載pam_mysql

wget http://downloads.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz?use_mirror=nchc


解壓和安裝

tar zxf pam_mysql-0.7RC1.tar.gz -C /tmp/

cd /tmp/pam_mysql-0.7RC1/

./configure --with-openssl

make

make install

當使用find / -name pam_mysql.so命令找到pam_mysql.so時就是代表安裝成功了。

ls /usr/lib/security/pam_mysql.so  #查看下是否有這個文件存在


pam_mysql的安裝可以參考下面的內容:

http://bbs.51cto.com/thread-825165-1.html


二、添加虛擬用戶

虛擬用戶可以使用兩種方式添加 mysql數據和db4工具生成的數據文件。


建立虛擬用戶使用的系統帳戶virtual

這個帳戶不需要登錄所以將他的home設爲/var/ftp/   或者不指定

useradd -d /var/ftp/ -s /sbn/nologin virtual

chown virtual.virtual /var/ftp   #ftp目錄的屬主和屬組改爲virtual


1.使用mysql添加虛擬用戶
建立vsftpd使用的mysql數據庫和表,並插入用戶名和密碼到表中:

mysqladmin -u root password 'your_Passw0rd'

mysql –u root –p

mysql>create database vsftpd

mysql>use vsftpd

mysql>create table users(name char(20),password char(20))

mysql> insert into users(name,password) values ('pei','pei')

mysql> insert into ftpusers(name,password) values ('admin','12345')

mysql>grant allon vsftpd.users to virtual@localhost identified by 'passwd'

mysql>quit


編輯pam文件加入以下內容:

vim /etc/pam.d/vsftpd

auth        sufficient   /usr/lib/security/pam_mysql.so user=virtual passwd=majinlong host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0

account     sufficient  /usr/lib/security/pam_mysql.so  user=virtual passwd=majinlong host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0


除以上內容外的其他內容全部使用#號註釋掉

注意:

crypt= n

crypt=0:明文密碼

crypt=1:使用crpyt()函數(對應SQL數據裏的encrypt()encrypt()隨機產生salt)

crypt=2:使用MYSQL中的password()函數加密

crypt=3:表示使用md5的散列方式


虛擬用戶的vsftpd.conf配置文件內容

#virtual users

guest_enable=YES         啓用虛擬用戶

guest_username=virtual        虛擬用戶使用的系統賬戶

virtual_use_local_privs=NO    虛擬用戶和本地用戶是否有相同的權限

user_config_dir=/etc/etc/vsftpd_user_config  單獨的用戶配置文件位置


2.使用本地數據添加虛擬用戶

添加虛擬用戶口令文件格式如下:

user

passwd

例如:

vi user.txt

admin

12345


生虛擬用戶口令認證數據庫文件,需要使用db4-utils軟件

db_load -T -t hash -f 口令文件的路徑 生成後的數據認證文件

db_load -T -t hash -f user.txt /etc/vsftpd/vuser.db


編輯pam文件  加入下面兩行:

auth    sufficient     pam_userdb.so db=/etc/vsftpd/vuser
account sufficient      pam_userdb.so db=/etc/vsftpd/vuser

其他的內容全部使用#號註釋掉


虛擬用戶的vsftpd.conf配置文件內容

#virtual users

guest_enable=YES               啓用虛擬用戶

guest_username=virtual            虛擬用戶使用的系統賬戶

virtual_use_local_privs=NO          虛擬用戶和本地用戶是否有相同的權限

user_config_dir=/etc/etc/vsftpd_user_config   //單獨的用戶配置文件位置


注意:從頭到尾pam_service_name=vsftpd這個選項都沒有動過,因爲我們一直在修改/etc/pam.d/vsftpd這個文件,沒有建立新的pam文件所以不需要改變這一項。


至此虛擬用戶的內容就完了下面可以使用虛擬用戶測試下



三、實現本地用戶,匿名用戶,虛擬用戶同時工作

實現本地用戶,匿名用戶,虛擬用戶同時工作的方法有兩種:

一個是添加多個vsftpd.conf配置文件,修改監聽端口使其工作在21端口以外的端口上

一個是修改pam文件使vsftpd直接支持本地,匿名和虛擬用戶同時登錄


上面第一種方法不是很難,網上有許多教程,我使用的是第二種方法下面就說下怎麼實現的:


修改後完整的pam文件/etc/pam.d/vsftpd的內容如下:
auth        sufficient   /usr/lib/security/pam_mysql.so user=virtual passwd=majinlong host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0
account     sufficient  /usr/lib/security/pam_mysql.so  user=virtual passwd=majinlong host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0
#auth       required    pam_listfiles.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed不允許ftpusers文件中的用戶登錄
#auth       required    pam_shell.so這個還不太清楚
auth        include     system-auth認證本地用戶的默認選項
account     include     system-auth認證本地用戶的默認選項
session     include     system-auth認證本地用戶的默認選項
session     required    pam_loginuid.so認證系統用戶的默認選項
#session            optional    pam_keyinit.so force revoke可有可無
如果想弄清楚上面的內容具體是什麼意思建議參考下‘pam百度百科’


大家可以參考下
http://spazzzz.blog.51cto.com/2707720/677799


一般第一列指定的內容是:module-type,一共就只有4種,分別是:

1 auth:對用戶身份進行識別,如提示輸入密碼,判斷是root否;

2 account:對賬號各項屬性進行檢查,如是否允許登錄,是否達到最大用戶數;

3 session:定義登錄前,及退出後所要進行的操作,如登錄連接信息,用戶數據的打開和關閉,掛載fs

4 password:使用用戶信息來更新數據,如修改用戶密碼。

第二列內容是:control-flag,有很多,不過一般常用的是4種,分別是:

5 optional:不進行成功與否的返回,一般返回一個pam_ignore

6 required:表示需要返回一個成功值,如果返回失敗,不會立刻將失敗結果返回,而是繼續進行同類型的下一驗證,所有此類型的模塊都執行完成後,再返回失敗;

7 requisite:與required類似,但如果此模塊返回失敗,則立刻返回失敗並表示此類型失敗;

8 sufficient:如果此模塊返回成功,則直接向程序返回成功,表示此類成功,如果失敗,也不影響這類型的返回值。

第三列內容是PAM模塊的存放路徑,默認是在/lib/security/目錄下,如果在此默認路徑下,要填寫絕對路徑。

第四列內容是PAM模塊參數,這個需要根據所使用的模塊來添加。


四、詳解vsftpd.conf文件的內容

1. 匿名及本地用戶共同參數

listen=yes  //vsftpd工作在standalone 模式下

write_enable=yes/no //是否允許全局可寫

download_enable=yes/no //是否允許所有用戶可以下載

dirlist_enable=yes/no //是否允許所有用戶可以瀏覽(列出文件列表)

pam_service_name=vsftpd  


ftpd_banner=歡迎語字符串

banner_file=文件

dirmessage_enable=yes/no

message_file=文件


參數ftpd_banner設置的歡迎語字符串將在登錄時看到,如果想做出多行歡迎語,就要把內容單獨存爲banner_file參數指定的文件,應用中 這兩個參數二選一即可。dirmessage_enablemessage_file參數是進入某個目錄後顯示的歡迎信息,用法與前兩個參數一樣。


2.本地用戶

local_root=/path //本地用戶登陸服務器後直接進入的目錄  

local_umask=八進制數 //本地用戶上傳檔案權限的 umask值  

local_max_rate=數字 //本地用戶傳輸速率單位爲 bps  

chmod_enable=yes/no // 是否允許本地用戶改變ftp 服務器上檔案的權限  

user_config_dir=/path //用戶單獨配置文件所在目錄

userlist_enable=yes/no //是否啓用 userlist 功能模塊  

userlist_deny=yes/no //是否拒絕 userlist 文件中用戶登陸 ftp 服務  

userlist_file=/path/to/file //指定的 userlist 文件名  

chroot_list_enable=yes/no //是否啓用 chroot_list 文件  

chroot_local_user=yes/no //是否限制本地用戶的根目錄爲自己的主目錄  

chroot_list_file=/path/to/file //設置 chrootlist 文件名


3.匿名用戶

anonymous_enable=YES /NO    //是否允許匿名訪問

no_anon_password=YES  //匿名用戶不需要輸入密碼

anon_root=/var/ftp    //設置匿名用戶的FTP根目錄(缺省爲/var/ftp)

anon_upload_enable=YES/NO   //匿名用戶是否可以上傳

anon_umask=022    //設置匿名用戶所上傳文件的默認權限掩碼值

anon_other_write_enable=YES/NO //是否允許匿名用戶可以使用除了建立文件夾和上傳文件以外其他的ftp寫操作命令。例如:deleterename 等等  

anon_world_readable_only=YES/NO      //匿名用戶是否可以瀏覽

anon_mkdir_write_enbale=YES/NO    //是否允許匿名用戶有創建目錄的寫入權限

anon_max_rate=0    //限制匿名用戶最的最大傳輸速率(0爲無限制,單位爲字節)






4.虛擬用戶

guest_enable=YES  //啓用虛擬用戶

guest_username=virtual   //虛擬用戶使用的系統賬戶

user_config_dir=/etc/etc/vsftpd_user_config    //單獨的用戶配置文件位置

virtual_use_local_privs=NO  

virtual_use_local_privs=YES時,虛擬用戶和本地用戶有相同的權限;

virtual_use_local_privs=NO時,虛擬用戶和匿名用戶有相同的權限,默認是NO


用戶單獨的配置文件可以使用匿名用戶配置文件的全部內容,

local_root=/var/ftp/123    //用戶的主目錄

#anon_world_readable_only=NO   //匿名用戶是否可以瀏覽

anon_upload_enable=YES   //匿名用戶是否可以上傳

anon_mkdir_write_enable=YES   //是否允許匿名用戶有創建目錄的寫入權限

anon_other_write_enable=YES//是否允許匿名用戶可以使用除了建立文件夾和上傳文件以外其他的ftp寫操作命令。例如:deleterename 等等

anon_max_rate=512000    //限制匿名用戶最的最大傳輸速率(0爲無限制,單位爲字節)





5.其他設置

日誌文件

xferlog_enable=yes/no            //是否啓用 xferlog 日誌格式
xferlog_std_format=yes/no     //是否採用標準格式記錄日

xferlog_file=/path/to/logfile            //xferlog 日誌文件所在位置,默認爲/var/log/xferlog

dual_log_enable=yes/no         //是否採用Vsftpd自己的日誌記錄方式
log_ftp_protocol=yes/no          //是否記錄所有的ftp命令日誌
vsftpd_log_file=/path/to/logfile     //指定vsftpd 日誌文件位置,默認爲/var/log/vsftpd.log


主動模式
port_enable=YES               //開啓主動模式
connect_from_port_20=YES      //當主動模式開啓的時候 是否啓用默認的20端口監聽
ftp_date_port=%portnumber%    //上一選項使用NO參數是 指定數據傳輸端口


被動模式
pasv_enable=YES   //開啓被動模式
pasv_min_port=%number% //被動模式最低端口
pasv_max_port=%number% //被動模式最高端口


連接限制
max_client=%number%   //最大連接數
max_per_ip=%number%   //ip最大連接數
anon_max_rate=%number%    //匿名用戶最大速率 單位kbps
local_max_rate=%number%   //本地用戶最大速率 單位kbps


超時限制

idle_session_timeout=600 //空閒連接超時
data_connection_timeout=120 //數據傳輸超時
accept_timeout=60 //PAVS請求超時
connect_timeout=60 //PROT模式連接超時



更多vsftpd.conf詳細配置:

http://tzsky.blog.51cto.com/1062094/237322

http://www.linux.gov.cn/  linux學園

http://redking.blog.51cto.com/27212/136218

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章