自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Debian+vsftpd+MySQL實(shí)現(xiàn)虛擬用戶zz詳解

數(shù)據(jù)庫(kù) MySQL
本文我們?cè)敿?xì)介紹了Debian+vsftpd+MySQL實(shí)現(xiàn)虛擬用戶zz的實(shí)現(xiàn)方法,希望能夠?qū)δ兴鶐椭?/div>

Debian+vsftpd+MySQL實(shí)現(xiàn)虛擬用戶zz的實(shí)現(xiàn)方法是本文我們主要要介紹的內(nèi)容,接下來(lái)我們就開(kāi)始一一介紹這一過(guò)程。

一、需求

1.虛擬用戶登錄

由于之前配置成功了postfix+MySQL虛擬用戶登錄,體會(huì)到了使用虛擬用戶的好處和靈活性,所以這次也考慮采用虛擬用戶,并且將FTP虛擬用戶的信息也存儲(chǔ)在MySQL中,這樣以后用PHP等寫(xiě)一些WEB GUI的管理程序,統(tǒng)一管理用戶,還是蠻方便的.

2.限制IP的匿名登錄

開(kāi)放匿名登錄,但是只允許特定的IP可以匿名登錄

3.不同用戶,不同目錄,不同權(quán)限

聽(tīng)起來(lái)有點(diǎn)像繞口令吧,舉例來(lái)說(shuō),有2個(gè)用戶,分別是普通用戶 (normal)和管理員(admin),FTP有2個(gè)目錄,分別是incoming和pub,要實(shí)現(xiàn)如下權(quán)限設(shè)置:

代碼:       incoming pub

normal 讀/寫(xiě)   只讀

admin  讀/寫(xiě)   讀/寫(xiě)

4.通過(guò)FTP管理Web站點(diǎn)

服務(wù)器上還架設(shè)了Apache,而網(wǎng)站管理員對(duì)Linux又不是很熟悉,而且也不想開(kāi)放一個(gè)帳號(hào)給網(wǎng)站管理員,以免他登錄到系統(tǒng)上去,把系統(tǒng)搞的亂78糟,所以參考Internet上提供虛擬主機(jī)的流行做法,就是通過(guò)FTP來(lái)管理網(wǎng)站,所以需要提供一個(gè)可供網(wǎng)站管理員登錄FTP進(jìn)行網(wǎng)站管理的帳號(hào).

二、選擇FTP服務(wù)器軟件

Linux下架設(shè)FTP站點(diǎn),有很多優(yōu)秀的FTP服務(wù)器軟件可供選擇,例如Wu-FTPD,Pure-FTPD,ProFTPD以及vsFTPD等等, 要想選擇一個(gè)適合自己需求的FTP服務(wù)器軟件,也需要費(fèi)點(diǎn)腦筋才行,對(duì)于我來(lái)說(shuō),選擇 vsftpd(very secure FTP daemon),主要有以下兩點(diǎn)原因:

1.選擇原則一

有人說(shuō),哪個(gè)FTPD是你最熟悉的就用哪個(gè),不過(guò)由于我之前沒(méi)有在Linux下架設(shè)FTP站點(diǎn)的經(jīng)驗(yàn),所以,對(duì)我來(lái)說(shuō),一切都是新的起點(diǎn).在vsftpd的官方主頁(yè)上看到了Debian官方FTP,RH官方FTP等都使用了vsftpd。

2.選擇原則二

第二點(diǎn)很大程度取決于vsftpd(very secure FTP daemon)的名字,因?yàn)樗呛馨踩腇TP軟件嘛,哈哈,再說(shuō)Debian官方等FTP都使用了vsftpd,選擇它應(yīng)該沒(méi)錯(cuò)的。

PS:FTP服務(wù)器軟件的選擇可以參考"鳥(niǎo)哥的Linux私房菜中的簡(jiǎn)易vsftpd服務(wù)器架設(shè)"一文.

三、實(shí)現(xiàn)方法

基于Debian GNU/Linux 3.1 Sarge 和 vsftpd-2.0.3

1.需要的軟件包

1).vsftpd:very secure FTP daemon

2).mysql-server,mysql-client

前者是MySQL數(shù)據(jù)庫(kù)服務(wù)器,用于存儲(chǔ)虛擬用戶信息,后者提供一個(gè)命令行的MySQL Client. 由于我之前配置postfix時(shí),已經(jīng)安裝過(guò)了MySQL,所以我不必安裝這個(gè)包了^_^

3).libpam-mysql:vsftpd是通過(guò)PAM驗(yàn)證用戶信息的,這個(gè)包可以讓PAM去讀取MySQL完成驗(yàn)證.

2.安裝

以root登錄Debian,輸入以下命令:代碼:#apt-get install vsftpd,libpam-mysql。

3.創(chuàng)建一個(gè)必要的本地用戶

雖說(shuō)是虛擬用戶,不過(guò),由于虛擬用戶的信息存儲(chǔ)在MySQL數(shù)據(jù)庫(kù)中,所以還是需要一個(gè)能夠讀取MySQL數(shù)據(jù)庫(kù)的本地用戶.

1),創(chuàng)建本地用戶的家目錄,此目錄也是FTP的家目錄:代碼:#mkdir /home/ftp

2),創(chuàng)建名為 ftpguest的本地用戶:代碼:#useradd ftpguest -d /home/ftp

3),修改FTP家目錄的所有者和組:代碼:#chown ftpguest.nogroup /home/ftp

4,配置MySQL數(shù)據(jù)庫(kù)

1),創(chuàng)建用于存儲(chǔ)虛擬用戶信息的數(shù)據(jù)庫(kù)ftpvuser:代碼:#mysqladmin -u root -p create ftpvuser

2),連接數(shù)據(jù)庫(kù):代碼:#mysql -u root -p

3)創(chuàng)建用于存儲(chǔ)虛擬用戶信息的表users:代碼:mysql>use ftpvuser;

mysql>CREATE TABLE users (username varchar(20) NOT NULL,password varchar(40) NOT NULL,PRIMARY KEY (username)) TYPE=MyISAM;

 

4)讓本地用戶ftpguest 能讀取ftpvuser數(shù)據(jù)庫(kù)的users表的內(nèi)容。注:YourPassword用于設(shè)定ftpguest訪問(wèn)數(shù)據(jù)庫(kù)的密碼.

代碼:

  1. mysql>grant select on ftpvuser.users to ftpguest@localhost identified by 'YourPassword';  
  2. mysql>flush privileges; 

 

 

5),建立虛擬用戶

代碼:

  1. mysql>insert into users (username,password) values ('normal','555555');  
  2. mysql>insert into users (username,password) values ('admin','666666');  
  3. mysql>insert into users (username,password) values ('webmaster','777777'); 

 

6),完成MySQL的配置:代碼:mysql>quit;

5,配置vsftpd 的PAM驗(yàn)證

1),打開(kāi)PAM配置文件:代碼:#nano /etc/pam.d/vsftpd

2),將以前的內(nèi)容注釋掉,然后添加下面2行內(nèi)容。

注:YourPassword就是剛才在前面設(shè)定的ftpguest訪問(wèn)數(shù)據(jù)庫(kù)的密碼.

代碼:

  1. auth required pam_mysql.so user=ftpguest passwd=YourPassword host=localhost   
  2. db=ftpvuser table=users usercolumn=username passwdcolumn=password crypt=0 
  3. account required pam_mysql.so user=ftpguest passwd=YourPassword host=localhost 
  4. db=ftpvuser table=users usercolumn=username passwdcolumn=password crypt=0 

 

6,配置vsftpd

1),打開(kāi)vsftpd的配置文件

代碼:#nano /etc/vsftpd.conf注意:一旦修改了/etc/vsftpd.conf文件的內(nèi)容,必須重啟vsftpd才能使新的設(shè)置生效,方法是:代碼:#/etc/init.d/vsftpd stop

#/etc/init.d/vsftpd start直接#/etc/init.d/vsftpd restart,好像不起作用?

 

2),修改vsftpd.conf文件如下:

代碼:#關(guān)閉匿名用戶訪問(wèn)

#anonymous_enable=YES

# 開(kāi)啟本地用戶訪問(wèn)

local_enable=YES

#開(kāi)啟虛擬用戶訪問(wèn)

guest_enable=YES

guest_username=ftpguest

#將本地用戶限制在自己的家目錄,這樣可避免FTP用戶訪問(wèn)到其他的系統(tǒng)目錄

chroot_local_user=YES

3),500 OOPS: cap_set_proc

趕快登錄FTP試一下吧,不過(guò)為什么無(wú)法登錄呢?服務(wù)器返回錯(cuò)誤:500 OOPS: cap_set_proc

Google之,這個(gè)錯(cuò)誤似乎與SELinux有關(guān),解決辦法是加載capability模塊:

代碼:#modprobe capability為了讓Linux在啟動(dòng)時(shí)自動(dòng)加載此模塊,把這個(gè)模塊放到/etc /modules中即可.

4),限制IP的匿名登錄

要想限制登錄vsftpd的客戶端的IP地址,要用到一個(gè)叫 TCP Wrappers的東東,對(duì)于TCP Wrappers,我的理解是,如果在vsftpd中啟用了TCP Wrappers的話,每次客戶端向vsftpd發(fā)起一個(gè)連接請(qǐng)求的時(shí)候,vsftpd首先會(huì)把這個(gè)連接請(qǐng)求交給TCP Wrappers處理,如果客戶端的IP被TCP Wrappers放行的話,才能繼續(xù)與vsftpd繼續(xù)會(huì)話,否則,直接就被拒絕服務(wù)了,不知道對(duì)不對(duì)?

a,修改/etc /vsftpd.conf

代碼:#啟用TCP Wrappers

tcp_wrappers=YES

b,修改/etc/hosts.deny

拒絕所有向vsftpd發(fā)起連接請(qǐng)求的IP,不過(guò),如果hosts.deny與 hosts.allow沖突的話,以hosts.allow優(yōu)先處理,這好像就是,先deny所有,然后在hosts.allow開(kāi)放特權(quán),呵呵

代碼:#拒絕所有連入vsftpd的IP先.

vsftpd: ALL

c,修改 /etc/hosts.allow

在這里開(kāi)放允許登錄vsftpd的IP地址關(guān)于VSFTPD_LOAD_CONF環(huán)境變量,vsftpd的man是這么說(shuō)的:

"If tcp_wrappers sets the VSFTPD_LOAD_CONF environment variable, then the vsftpd session will try and load the vsftpd configuration file specified in this variable. "

代碼:# 限制可以匿名登錄vsftpd的IP地址

vsftpd: 192.168.0.,210.83.200.200 : setenv VSFTPD_LOAD_CONF /etc/vsftpd/vsftpd.anonymous

#允許vsftpd的虛擬用戶以任何IP連接 FTP

vsftpd: ALL : setenv VSFTPD_LOAD_CONF /etc/vsftpd/vsftpd.virtual

d,修改/etc/vsftpd/vsftpd.anonymous

代碼:#mkdir /etc/vsftpd/

#nano /etc/vsftpd/vsftpd.anonymous

#允許匿名登錄

anonymous_enable=YES

e,修改/etc/vsftpd/vsftpd.virtual

代碼:#nano /etc/vsftpd/vsftpd.virtual

#不允許匿名登錄

anonymous_enable=NO

5),為不同的用戶設(shè)置不同的訪問(wèn)權(quán)限

a,激活單個(gè)用戶配置功能,增加以下配置行到vsftpd的配置文件:

代碼:#nano /etc/vsftpd.conf

#指定不同用戶配置文件的存放路徑

user_config_dir=/etc/vsftpd/vsftpd_user_conf

b,普通用戶:下載/上傳

編輯/etc/vsftpd/vsftpd_user_conf/normal

注意:用戶的配置文件名與用戶名一致,不過(guò)匿名用戶的配置文件名為ftp,而不是anonymous

代碼:#mkdir /etc/vsftpd/vsftpd_user_conf

#nano /etc/vsftpd/vsftpd_user_conf/normal加入以下內(nèi)容:

#允許下載

代碼:anon_world_readable_only=NO

#允許寫(xiě)入,上傳以及建立目錄

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

c,管理員用戶:下載/上傳/刪除等.

代碼:#cp /etc/vsftpd/vsftpd_user_conf/normal /etc/vsftpd/vsftpd_user_conf/admin編輯admin的配置文件:

代碼:#nano /etc/vsftpd/vsftpd_user_conf/admin管理員除了擁有普通用戶的權(quán)限以外,還擁有刪除/重命名/改變文件屬性的權(quán)限

加入以下內(nèi)容:

代碼:#允許重命名和刪除文件

anon_other_write_enable=YES

#虛擬用戶擁有與本地用戶相同的權(quán)限(由于chmod僅僅對(duì)本地用戶有效,所以如果想要虛擬用戶擁有chmod的權(quán)限,這一項(xiàng)必須激活)

virtual_use_local_privs=YES

#允許修改文件屬性

chmod_enable=YES

d,網(wǎng)站管理員

代碼:#cp /etc/vsftpd/vsftpd_user_conf/admin /etc/vsftpd/vsftpd_user_conf/webmaster編輯webmaster的配置文件:

代碼:#nano /etc/vsftpd/vsftpd_user_conf/webmaster

加入以下內(nèi)容:

代碼:#將FTP家目錄指向網(wǎng)站的家目錄(我的www目錄使用Apache默認(rèn)的目錄)

local_root=/var/www

# 默認(rèn)情況下,上傳到FTP站點(diǎn)的文件的擁有者都是ftpguest,其他用戶是沒(méi)有訪問(wèn)權(quán)限的

#所以,當(dāng)訪問(wèn)網(wǎng)站的時(shí)候,會(huì)出現(xiàn)"沒(méi)有權(quán)限訪問(wèn)該文件的錯(cuò)誤",這是由于Apache的用戶

#www-data無(wú)法訪問(wèn)/var/www下的文件造成的,把umask設(shè)置成033甚至000即可解決這個(gè)問(wèn)題.

local_umask=033

e,為normal,admin用戶設(shè)置對(duì) incoming,pub目錄不同的權(quán)限

閱讀了一遍vsftpd man中關(guān)于權(quán)限的相關(guān)設(shè)置,似乎沒(méi)有單獨(dú)設(shè)置每個(gè)目錄權(quán)限的地方?后來(lái)想到是不是可以利用Linux文件系統(tǒng)的文件權(quán)限設(shè)置來(lái)達(dá)到此目的,以前在 Windows下利用IIS來(lái)架設(shè)站點(diǎn)時(shí),我就是利用NTFS權(quán)限設(shè)置來(lái)達(dá)到控制不同用戶對(duì)目錄的訪問(wèn)權(quán)限.不過(guò)試了一下,還是無(wú)法完美的實(shí)現(xiàn)以下的權(quán)限控制:

代碼:       incoming pub

normal 讀/寫(xiě)   只讀

admin  讀/寫(xiě)   讀/寫(xiě)舉例來(lái)說(shuō),可以通過(guò)把pub設(shè)置成只讀來(lái)控制normal用戶只讀pub的權(quán)限,不過(guò)admin對(duì)pub也是只讀了不過(guò),還好,因?yàn)閍dmin擁有修改目錄屬性的權(quán)限,如果admin用戶想要通過(guò)FTP來(lái)完成管理pub目錄的話,可以臨時(shí)把pub目錄修改成讀/寫(xiě)屬性.

四、小結(jié)

1.vsftpd的目標(biāo)是完成一個(gè)簡(jiǎn)易而且安全性不低的FTPD,功能嘛,似乎還是有點(diǎn)不足,特別是目錄權(quán)限這方面的設(shè)置如果是對(duì)目錄權(quán)限有比較復(fù)雜的需求的話,可以考慮一下Proftpd .

2.在測(cè)試的時(shí)候,除了使用FTP Client工具以外,最好再使用Sniffer類(lèi)的軟件作為輔助,因?yàn)橛袝r(shí)候FTP Client并不會(huì)完全把FTPD返回信息呈現(xiàn)在你面前,而有時(shí)候,這些信息對(duì)排除FTPD故障會(huì)有很大幫助的,而一旦使用Sniffer類(lèi)的軟件,所有的客戶端與服務(wù)器端交互的信息都不會(huì)漏掉的。

關(guān)于Debian+vsftpd+MySQL實(shí)現(xiàn)虛擬用戶zz的實(shí)現(xiàn)方法就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. MySQL數(shù)據(jù)庫(kù)my.cnf配置文件注釋詳解
  2. SQL Server數(shù)據(jù)庫(kù)復(fù)制失敗的原因及解決方案
  3. SQL Server 2005數(shù)據(jù)庫(kù)游標(biāo)調(diào)用函數(shù)實(shí)例解析
  4. MySQL數(shù)據(jù)庫(kù)中EXPLAIN的使用及其注意事項(xiàng)詳解
  5. SQL Server數(shù)據(jù)庫(kù)用視圖來(lái)處理復(fù)雜的數(shù)據(jù)查詢關(guān)系
責(zé)任編輯:趙鵬 來(lái)源: 火魔網(wǎng)
相關(guān)推薦

2010-05-20 12:57:38

2011-02-24 09:14:37

vsFTPd虛擬用戶

2011-03-04 10:05:10

Vsftpd虛擬用戶

2011-03-04 14:47:58

Vsftpd虛擬用戶

2017-05-23 14:56:49

MySQLvsftpd虛擬用戶

2011-03-03 17:02:50

Vsftpd

2011-03-04 13:26:08

Vsftpd虛擬賬號(hào)

2010-12-27 13:26:25

FreeBSDvsftpd虛擬用戶

2010-02-22 18:27:14

CentOS vsft

2011-03-04 15:18:47

Vsftpd

2011-02-21 17:32:37

Vsftpd

2011-02-23 10:54:11

Debianproftpdmysql

2010-07-01 13:29:08

vsftpd

2010-01-13 13:57:09

CentOS vsft

2012-08-24 15:13:34

2011-03-02 13:28:33

Vsftpd配置

2011-03-02 11:32:55

vsftpd配置

2010-12-29 09:51:06

配置vsftpdDebian

2015-08-25 14:34:20

LinuxvsftpdFTP

2011-03-01 09:29:45

vsftpd用戶目錄
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)