兩種方式建立Vsftpd虛擬用戶

兩種方式建立Vsftpd虛擬用戶

 

我們登錄FTP有三種方式,匿名登錄、本地用戶登錄和虛擬用戶登錄。

匿名登錄:在登錄FTP時使用默認的用戶名,一般是ftp或anonymous。

本地用戶登錄:使用系統用戶登錄,在/etc/passwd中。

虛擬用戶登錄:這是FTP專有用戶,有兩種方式實現虛擬用戶,本地數據文件和數據庫服務器。

FTP虛擬用戶是FTP服務器的專有用戶,使用虛擬用戶登錄FTP,只能訪問FTP服務器提供的資源,大大增強了系統的安全。

時時彩源碼下載

 

本文實驗的Linux系統是CentOS 5 update2

 

一、本地數據文件方式

1. 添加虛擬用戶口令文件

[root@CentOS5 /]#vi /etc/vsftpd/vftpuser.txt

添加虛擬用戶名和密碼,一行用戶名,一行密碼,以此類推。奇數行爲用戶名,偶數行爲密碼。

bobyuan #用戶名

123456 #密碼

markwang #用戶名

123456 #密碼

 

2. 生成虛擬用戶口令認證文件

將剛添加的vftpuser.txt虛擬用戶口令文件轉換成系統識別的口令認證文件。

首先查看系統有沒有安裝生成口令認證文件所需的軟件db4-utils。

[root@CentOS5 /]#rpm –qa |grep db4-utils

[root@CentOS5 /]#rpm –ivh db4-utils-4.3.29-9.fc6.i386.rpm

時時彩源碼下載

下面使用db_load命令生成虛擬用戶口令認證文件。

[root@CentOS5 /]#db_load –T –t hash –f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db

 

3. 編輯vsftpd的PAM認證文件

在/etc/pam.d目錄下,

[root@CentOS5 /]#vi /etc/pam.d/vsftpd

將裏面其他的都註釋掉,添加下面這兩行:

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser

account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser

 

4. 建立本地映射用戶並設置宿主目錄權限

所有的FTP虛擬用戶需要使用一個系統用戶,這個系統用戶不需要密碼。

[root@CentOS5 /]#useradd –d /home/vftpsite –s /sbin/nologin vftpuser

[root@CentOS5 /]#chmod 700 /home/vftpsite

 

5. 配置vsftpd.conf(設置虛擬用戶配置項)

[root@CentOS5 /]#vi /etc/vsftpd/vsftpd.conf

guest_enable=YES #開啓虛擬用戶

guest_username=vftpuser #FTP虛擬用戶對應的系統用戶

pam_service_name=vsftpd #PAM認證文件

 

6. 重啓vsftpd服務

[root@CentOS5 /]#service vsftpd restart

 

7. 測試虛擬用戶登錄FTP

C:\User\Administrator>ftp 192.168.120.240

連接到192.168.120.240。

220 Welcome to BOB FTP server

用戶(192.168.120.240(none)):markwang

331 Please specify the password.

密碼:

230 Login successful.

 

二、數據庫服務器(MySQL)方式

1. 安裝MySQL

我使用的是Tar包安裝的MySQL,版本號:mysql-6.0.8-alpha.tar.gz

具體安裝方法,請查看我的另一篇文章“部署LAMP+Discuz!7.0”。

 

2. 建立本地映射用戶並設置宿主目錄權限

[root@CentOS5 /]#useradd –d /home/vftpsite –s /sbin/nologin vftpuser

[root@CentOS5 /]#chmod 700 /home/vftpsite

 

3. 配置vsftpd.conf(設置虛擬用戶配置項)

[root@CentOS5 /]#vi /etc/vsftpd/vsftpd.conf

guest_enable=YES #開啓虛擬用戶

guest_username=vftpuser #FTP虛擬用戶對應的系統用戶

pam_service_name=vsftpd #PAM認證文件

 

4. 在MySQL中建立用戶口令數據庫

[root@CentOS5 /]#mysql –u root –p

mysql> create database vftpuser;   #建立虛擬用戶數據庫,庫名vftpuser

mysql> use vftpuser;  #進入vftpuser數據庫

 

mysql> create table users(name char(16) binary,passwd char(16) binary);  #建立虛擬用戶口令表,表名users

 

mysql> insert into users (name,passwd) values ('bobyuan',password('111')); 

mysql>  insert into users (name,passwd) values ('markwang',password('111'));

#建立兩個虛擬用戶,bobyuan和markwang

注:在這裏我用這種方法添加的虛擬用戶密碼都是經過MySQL加密的,加密後的密碼pam-mysql不能識別(MySQL和pam-mysql兼容性有些問題),因此本次實驗使用明文保存密碼。
添加明文密碼:
方法一:單個添加用戶
mysql> insert into users (name,passwd) values ('bobyuan', '111');
mysql> insert into users (name,passwd) values ('markwang',‘111');
方法二:批量添加用戶
新建vftpuser.txt文件
[root@CentOS5 /]#vi vftpuser.txt
添加用戶名和密碼,注意字段數據之間要用Tab鍵隔開。
bobyuan  111
markwang 111
mysql>use vftpuser;
mysql>load data local infile “/vftpuser.txt”into table users;

mysql>flush privileges;

 

mysql> grant select on vftpuser.users to vftpuser@localhost identified by '111111';  #授權vftpuser這個賬號可以讀取vftpuser數據庫的user表

 

5. 驗證第4步的設置是否成功

[root@CentOS5 /]#mysql –u vftpuser –p

mysql>show databases;

mysql>use vftpuser;

mysql>show tables;

mysql>select * from users;

mysql>quit

如下圖:

clip_p_w_picpath002

 

6. 編譯MySQL的PAM認證模塊

查看/lib/security目錄下有沒有MySQL對應的PAM模塊。

clip_p_w_picpath004

如果沒有則下載pam-mysql安裝(http://sourceforge.net/projects/pam-mysql),

我下載的是pam_mysql-0.7RC1.tar.gz。

[root@CentOS5 /]#cd /usr/local/src

[root@CentOS5 src]#tar –zxvf pam_mysql-0.7RC1.tar.gz

[root@CentOS5 src]#cd pam_mysql-0.7RC1

[root@CentOS5 pam_mysql-0.7RC1]# ./configure --with-mysql=/usr/local/mysql/ --with-pam-mods-dir=/lib/security/

[root@CentOS5 pam_mysql-0.7RC1]#make

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

 

7. 編輯vsftpd的PAM認證文件

在/etc/pam.d目錄下,

[root@CentOS5 /]#vi /etc/pam.d/vsftpd

將裏面其他的都註釋掉,添加下面這兩行:

auth required pam_mysql.so user=vftpuser passwd=111111 host=localhost db=vftpuser table=users usercolumn=name passwdcolumn=passwd crypt=0

account required pam_mysql.so user=vftpuser passwd=111111 host=localhost db=vftpuser table=users usercolumn=name passwdcolumn=passwd crypt=0

crypt=0:表示口令使用明文方式保存在數據庫中
crypt=1:表示口令使用UNIX的DES加密方式加密後保存在數據庫中
crypt=2:表示口令使用MySQL的password()函數加密後保存在數據庫中
crypt=3:表示口令使用MD5散列值的方式保存在數據庫中

 

8. 重啓vsftpd服務

[root@CentOS5 /]#service vsftpd restart

 

9. 測試虛擬用戶登錄FTP

C:\User\Administrator>ftp 192.168.120.240

Connected to 192.168.120.240.
220 Welcome to BOB FTP server
User (192.168.120.240:(none)): bobyuan
331 Please specify the password.
Password:
230 Login successful.
ftp> quit
221 Goodbye.

 

三、虛擬用戶高級設置

1. virtual_use_local_privs參數

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

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

 

當virtual_use_local_privs=YES,write_enable=YES時,虛擬用戶具有寫權限(上傳、下載、刪除、重命名)。

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,

anon_upload_enable=YES時,虛擬用戶不能瀏覽目錄,只能上傳文件,無其他權限。

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_upload_enable=NO時,虛擬用戶只能下載文件,無其他權限。

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_upload_enable=YES時,虛擬用戶只能上傳和下載文件,無其他權限。

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_mkdir_write_enable=YES時,虛擬用戶只能下載文件和創建文件夾,無其他權限。

 

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_other_write_enable=YES時,虛擬用戶只能下載、刪除和重命名文件,無其他權限。

 

2. 建立各個虛擬用戶自身的配置文件

[root@CentOS5 /]#vi /etc/vsftpd/vsftpd.conf

添加:

user_config_dir=/etc/vsftpd/vsftpd_user_conf

[root@CentOS5 /]#mkdir /etc/vsftpd/vsftpd_user_conf

編輯bobyuan的配置文件

[root@CentOS5 /]#vi /etc/vsftpd/vsftpd_user_conf/bobyuan

添加:

anon_world_readable_only=NO #開放bobyuan的下載權限(只能下載)。注意這個地方千萬不能寫成YES,否則bobyuan將不能列出文件和目錄。

編輯markwang的配置文件

[root@CentOS5 /]#vi /etc/vsftpd/vsftpd_user_conf/markwang

添加:

write_enable=YES #開放markwang的寫權限

anon_world_readable_only=NO #開放markwang的下載權限

anon_upload_enable=YES #開放markwang的上傳權限

anon_mkdir_write_enable=YES #開放markwang創建目錄的權限

anon_other_write_enable=YES #開放markwang刪除和重命名的權限

 

四、虛擬用戶配置文件(實驗)

1. 所有虛擬用戶使用統一配置

[root@CentOS5 /]#vi /etc/vsftpd/vsftpd.conf

write_enable=YES

anonymous_enable=NO

local_enable=YES

guest_enable=YES

guest_username=vftpuser

virtual_use_local_privs=NO

pam_service_name=vsftpd

anon_world_readable_only=NO #可以下載

anon_upload_enable=NO(默認值) #不能上傳

anon_mkdir_write_enable=NO(默認值) #不能新建文件夾

anon_other_write_enable=NO(默認值) #不能刪除和重命名文件

ftpd_banner=Welcome to BOB FTP server

xferlog_enable=YES

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

ascii_upload_enable=YES

ascii_download_enable=YES

tcp_wrappers=NO

setproctitle_enable=YES

listen_port=21

connect_from_port_20=YES

idle_session_timeout=600

data_connection_timeout=120

max_clients=0

max_per_ip=3

local_max_rate=512000

 

2. 各個虛擬用戶使用自身配置

[root@CentOS5 /]#vi /etc/vsftpd/vsftpd.conf

write_enable=YES

anonymous_enable=NO

local_enable=YES

guest_enable=YES

guest_username=vftpuser

virtual_use_local_privs=NO

pam_service_name=vsftpd

user_config_dir=/etc/vsftpd/vsftpd_user_conf

ftpd_banner=Welcome to BOB FTP server

xferlog_enable=YES

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

ascii_upload_enable=YES

ascii_download_enable=YES

tcp_wrappers=NO

setproctitle_enable=YES

listen_port=21

connect_from_port_20=YES

idle_session_timeout=600

data_connection_timeout=120

max_clients=0

max_per_ip=3

local_max_rate=512000

 

[root@CentOS5 /]#mkdir /etc/vsftpd/vsftpd_user_conf

編輯bobyuan(FTP匿名用戶)的配置文件

[root@CentOS5 /]#vi /etc/vsftpd/vsftpd_user_conf/bobyuan

anon_world_readable_only=NO

編輯ftpadmin(FTP匿名管理員)的配置文件

[root@CentOS5 /]#vi /etc/vsftpd/vsftpd_user_conf/ftpadmin

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

 

關於使用MySQL實現虛擬用戶的另一篇文章,請參考“Vsftpd FTP服務器-虛擬用戶(mysql)和本地用戶同時驗證”。

 

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