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

CentOS安裝配置vsftp虛擬用戶登錄

系統(tǒng) Linux 系統(tǒng)運維
虛擬用戶個人理解是一種介于實體用戶和匿名用戶之間的用戶。原因是:虛擬用戶雖然在系統(tǒng)的實體用戶文件中不存在,但是會在系統(tǒng)的其他地方進行記錄(本文是Berkeley DB),以供vsftp用來對ftp訪問者進行必要的鑒權(quán),而鑒權(quán)完畢之后,該用戶操作文件之時,將是使用vsftp的運行用戶ftp進行的。

[[150070]]

在使用Linux時,難免要進行各種文件的遠程傳輸,比如:網(wǎng)站的代碼,共享資源等,而這其中用的最多的傳輸方法大概就是FTP了。Linux下可用FTP服務(wù)端是非常多的,vsftp, proftp, uw-ftp等,其中vsftp流行度比較廣,沖著這個,本人在自己的CentOS上也就選擇了vsftp,而且,vsftp支持PAM(pluggable authentication modules)下虛擬用戶設(shè)置,這正是Mitchell Chu比較喜歡的一種方式,接下來就請vsftp君上場。

Vsftp使用的用戶中,支持三種用戶模式,分別是:實體用戶,匿名用戶和虛擬用戶(guest, 亦稱訪客身份)。實體用戶(Real User)是指用戶本身存在于系統(tǒng)中的用戶,他們存在于/etc/passwd和/etc/shadow文件中。匿名用戶(Anonymous)是指客戶 端無需提供任何用戶身份,ftp為訪問者提供一個名為anonymous的特殊用戶以供其使用。虛擬用戶(Virtual User)個人理解是一種介于實體用戶和匿名用戶之間的用戶。原因是:虛擬用戶雖然在系統(tǒng)的實體用戶文件中不存在,但是會在系統(tǒng)的其他地方進行記錄(本文是Berkeley DB),以供vsftp用來對ftp訪問者進行必要的鑒權(quán),而鑒權(quán)完畢之后,該用戶操作文件之時,將是使用vsftp的運行用戶ftp進行的。由于實體用戶需要的是系統(tǒng)真實帳戶,開放這種權(quán)限無疑會增加系統(tǒng)的風險,而虛擬用戶使用的是和實體用戶不同的用戶驗證體系,并且,在系統(tǒng)中并不實際存在虛擬用戶到實體用戶的映射關(guān)系,因此降低了FTP給系統(tǒng)帶來的風險性,在實際生產(chǎn)環(huán)境中,虛擬用戶可以更加靈活的進行獨立管理,比如:虛擬主機需要給用戶提供FTP帳 戶。有這么些好處之后,讓我們看看是如何配置吧!

預(yù)備式

Berkeley DB 數(shù)據(jù)庫:用來存儲虛擬用戶的登錄信息。

pam_userdb.so:用來驗證虛擬用戶。

db4_utils:用來轉(zhuǎn)換虛擬用戶到DB數(shù)據(jù)的工具。 

安裝需要的包

CentOS中好像是默認自帶vsftp的,因此,無需安裝,如果你不確認,可以用which看下:

  1. which vsftpd 
  2.   
  3. # 如果安裝好了的話,應(yīng)該是有類似下面的輸出: 
  4. # /usr/sbin/vsftpd 
  5. # 如果沒安裝,則類似下面的輸出 
  6. # /usr/bin/which: no xd in (/home/limituser... 

沒有安裝的話,請安裝:

  1. yum install vsftpd  
  2. # 或者: yum -y install vsftpd 

當然,清空下yum的緩存亦可:

  1. pushd /etc/yum.repos.d/ 
  2. rm -rf * 
  3. wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo 
  4. yum clean all  
  5.  
  6. yum -y install vsftpd ## 這句還是重點. 

為了簡單,我們可以一次性安裝所有需要的包:

  1. yum install db4-utils db4 vsftpd 
  2.   
  3. ## Mitchell Chu提醒:有的就不用再安裝了,請自行增減 

創(chuàng)建虛擬用戶

虛擬用戶我們使用Berkeley DB數(shù)據(jù)庫來存儲。***步是創(chuàng)建純文本來添加用戶和密碼,用戶名和密碼各占一行。比如我們要創(chuàng)建:useasp的用戶名,密碼是blog.useasp.net,并且創(chuàng)建一個admin密碼是adminpasswd的用戶,那么,純文本將類似如下:

  1. pushd /etc/vsftpd 
  2. cat >vusers.txt 
  3. useasp 
  4. blog.useasp.net 
  5. admin 
  6. adminpasswd 

創(chuàng)建好vusers.txt后,我們需要的第二步是將純文本轉(zhuǎn)換為db文件,這時候需要使用到db_load了:

  1. db_load -T -t hash -f vusers.txt vsftpd-virtual-users.db 

為了安全起見,記得設(shè)置僅root可讀寫(當前是root):

  1. chmod 600 vsftpd-virtual-users.db 

再清理掉原來的純文本文件:

  1. rm vusers.txt 

此時,我們已經(jīng)將需要登錄FTP的用戶已經(jīng)準備好了,接下來就需要去配置vsftpd,讓vsftpd能夠正確的識別并支持已經(jīng)設(shè)置好虛擬用戶了。 

VSFTPD虛擬用戶的配置

找到vsftpd.conf配置文件,添加或修改下面這些配置選項:

  1. # 禁止匿名登錄 
  2. anonymous_enable=NO 
  3. anon_upload_enable=YES 
  4. anon_other_write_enable=YES 
  5. # 啟用本地用戶 
  6. local_enable=YES 
  7. # 虛擬用戶使用本地用戶權(quán)限 
  8. virtual_use_local_privs=YES 
  9. # 可寫 
  10. write_enable=YES 
  11. # PAM配置 
  12. pam_service_name=vsftpd 
  13. # 啟用虛擬用戶 
  14. guest_enable=YES 
  15. # 用戶后綴: 配合下面local_root使用,將會用登錄的用戶名替換掉$USER 
  16. user_sub_token=$USER 
  17. # 根目錄 
  18. local_root=/var/ftp/$USER 
  19. # 啟用chroot,登錄后會被定位到指定根目錄 
  20. chroot_local_user=YES 
  21. # 將所有的用戶和組顯示為ftp 
  22. hide_ids=YES 

vsftpd的配置文件是在/etc/vsftpd/vsftpd.conf,原有配置項可以保留默認值,如果需要日志,vsftpd有兩個日志可供使用,一個是標準xferlog格式的,一個是vsftpd格式的,可讀性后者更好,當然,你也可以兩個日志都啟用,要啟用可以設(shè)置:xferlog_enable, xferlog_std_format, xferlog_file, vsftpd_log_file等參數(shù)以獲得需要的日志效果。 

#p#

虛擬用戶的PAM配置

要針對虛擬用戶啟用PAM,我們還需要對PAM盡心配置,在上面的vsftpd配置文件中,我們使用pam_service_name來配置了PAM將使用的配置文件,這個文件安裝后是默認存在的,如果你覺得有必要保留原來的配置,可以先行備份一份,而后配置文件內(nèi)容改為如下:

  1. #%PAM-1.0 
  2. auth       required     pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users 
  3. account    required     pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users 
  4. #session    required     pam_loginuid.so 

要啟用session可以將上面的#注釋掉,如果是在32位系統(tǒng)下,網(wǎng)上有一個配置方法是下面這種:

  1. #%PAM-1.0 
  2. auth       sufficient     pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users 
  3. account    sufficient     pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users 

由于本人對Linux下的PAM并不是很了解,并不太了解requiredsufficient的區(qū)別,這里不好做過多的論斷,有了解的可以指點一下,謝謝!

PAM配置里面,是指明賬戶保存的所在位置,我們配置文件里面的路徑即是前面使用db_load創(chuàng)建的Berkeley DB的文件路徑。 

創(chuàng)建FTP目錄

前面vsftpd已經(jīng)配置了ftp的目錄,我們需要先行創(chuàng)建FTP根目錄,和用戶需要的目錄,因為一旦這些用戶登錄,將會被vsftpd重新定位到指定的home目錄下的,vsftpd中我們配置的是/var/ftp,因此我們需要確認此目錄是否存在,不存在我們就需要創(chuàng)建,而后,在此目錄下創(chuàng)建虛擬用戶的根目錄,目錄名稱就是用戶名稱。

  1. mkdir -p /var/ftp/{useasp,admin} 
  2. chown -R ftp:ftp /var/ftp 

為了保證能夠順利讀取到文件,我們將根目錄下的所有文件都變成ftp這個用戶所有——ftp賬戶系統(tǒng)已經(jīng)默認設(shè)置好了,vsftpd就是使用這個賬戶來操作的。 

重啟FTP服務(wù),測試FTP

按上面的流程配置完后,我們就可以重新啟動vsftpd服務(wù),讓新的配置生效——如果你沒有辦法使用此命令,請參看后面的省卻麻煩一節(jié),將vsftpd設(shè)置成為開機啟動服務(wù):

  1. service vsftpd restart 

重啟之后,理論上來說,應(yīng)該就能使用FTP客戶端訪問FTP服務(wù)器了,如果需要測試,你也可以直接在本機訪問測試下:

  1. ftp 127.0.0.1 

此時應(yīng)該能夠得到正常返回,類似如下:

  1. Connected to 127.0.0.1 (127.0.0.1). 
  2. 220-Welcome to Mitchell Personal Web Server(MPWS) 
  3. 220-Please use user name and password to login... 
  4. 220-if you have any question, please contact MitchellChu<******@useasp.net> 
  5. 220 
  6. Name (127.0.0.1:root):useasp 
  7. 331 Please specify the password
  8. Password
  9. 230 Login successful. 
  10. Remote system type is UNIX. 
  11. Using binary mode to transfer files. 
  12. ftp> 

而在系統(tǒng)的日志中應(yīng)該也能看到登錄信息(以下是多個日志文件,和有的如果沒有配置vsftpd的日志文件將無法看到):

  1. # tail -f /var/log/secure 
  2. Sep  4 23:36:11 CentOS vsftpd[8721]: pam_userdb(vsftpd:auth): user 'useasp' granted access 
  3.   
  4. # tail -f /var/log/vsftpd.log 
  5. Fri Sep  4 23:36:15 2015 [pid 8721] [useasp] FTP response: Client "127.0.0.1""150 Here comes the directory listing." 

 到此,我們就已經(jīng)配置了一個可以正常訪問的FTP服務(wù)器了。 

開啟防火墻,開放給別人用吧

上面測試正常后,如果你開啟了iptables,那么,記得添加規(guī)則,讓你的21,20端口,以后被動模式時使用的端口范圍開放出來吧:

  1. iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT 
  2. iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT 
  3. iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 65300:65360 -j ACCEPT 
  4. service iptables save 

上面的是我的iptables的配置,開放了21和20端口,20端口是ftp-data用的,用來傳輸數(shù)據(jù)。 

省卻麻煩

為了不用每次重啟之后都爬上機器上開啟FTP,我們可以將vsftpd設(shè)置為開機啟動——如果系統(tǒng)已經(jīng)有了這個服務(wù),忽略:

  1. chkconfig --levels 345 vsftpd on 
  2. service vsftpd start 

至此,就差不多得到一個比較***的FTP Server了。 

后記:

上面是配置vsftpd使用虛擬用戶的基本流程,但在配置中,我們總是能發(fā)現(xiàn)這樣或者那樣的問題,因此就需要我們不斷的去DEBUG整個流程,由于Linux中有SELinux的存在,很多問題的根源還是在于SELinux的設(shè)置,如果你需要簡單快捷,那么使用下面這個命令即可解決大部分問題——網(wǎng)上很多朋友也正是這樣解決的:

  1. setenforce 0 
  2. or 
  3. setenforce Permissive 

當然,如果你和Mitchell Chu一樣,也是個不愿意如此簡單了事的人兒,那么,咱們繼續(xù)踏上征程……在按上面的方法配置好整個FTP服務(wù)器之后,本人也或多或少碰到如下的這些問題,現(xiàn)在匯集起來,方便后來者(若有時間,會展開來講,暫且記錄下):

1.不能定位到各自用戶的目錄,這個問題的存在,我們可以嘗試設(shè)置SELinux中的ftp_home_dir來解決:

  1. setsebool -P ftp_home_dir on 

2.不能列出FTP目錄內(nèi)容,這個問題也是SELinux引起的,可能的原因是vsftpd對于目錄并沒有權(quán)限,檢查下自己的權(quán)限是否正確,vsftpd使用的是ftp用戶訪問,看看自己是否設(shè)置錯權(quán)限了?

3.還是不能列出目錄文件,再看看目標文件夾的類型對不對,一般需要的是public_content_r_t,如果你不確認,可以使用下面的命令查看:

  1. ls -alZ 

你將看到類似如下的輸出:

  1. drwxr-xr-x. root root system_u:object_r:public_content_t:s0 . 
  2. drwxr-xr-x. root root system_u:object_r:var_t:s0       .. 
  3. drwxr-xr-x. root root system_u:object_r:var_t:s0 useasp 
  4. drwxr-xr-x. root root system_u:object_r:var_t:s0 admin 

可以看到,默認的是var_t,我們需要設(shè)置一下,這里需要用到工具semanage,如果沒有,需要安裝policycoreutils-python

  1. yum -y install policycoreutils-python 

 因為我使用了自行編譯的Python版本,導(dǎo)致semanage不能正常運行,報錯:

  1. Traceback (most recent call last): 
  2.   File "/usr/sbin/semanage", line 23, in <module> 
  3.     import policycoreutils.default_encoding_utf8 
  4. ImportError: No module named policycoreutils.default_encoding_utf8 

修正后,直接使用semanage來設(shè)置:

  1. restorecon -R -v /var/ftp/{useasp,admin} 

4.不能上傳文件,不能創(chuàng)建文件夾,還是SELinux的問題啊,設(shè)置:

  1. setsebool -P allow_ftpd_anon_write on 

5.還不能上傳文件?試試:

  1. semanage fcontext -a -t public_content_rw_t "/var/ftp(/.*)?" 
  2. restorecon -R -v /var/ftp/{useasp,admin} 

這個和上面的設(shè)置差不多,只是權(quán)限更大,請謹慎操作!

責任編輯:火鳳凰 來源: Mitchell Chu博客
相關(guān)推薦

2012-06-19 15:51:22

集群系列2

2011-03-02 09:47:51

PureftpCentos

2011-03-02 10:09:53

CentosPureftp

2012-03-18 22:33:15

centosxen

2010-02-26 14:03:11

Fedora vsft

2010-02-22 16:49:35

CentOS vsft

2010-03-29 14:48:58

CentOS系統(tǒng)

2009-06-11 13:43:21

jBPM用戶指南jBPM 4.0

2011-03-11 12:57:30

CentosLAMP

2010-01-13 11:17:50

2011-04-01 12:22:35

2010-02-22 18:27:14

CentOS vsft

2010-01-14 13:47:30

CentOS extm

2010-01-13 15:50:23

CentOS安裝

2010-01-13 13:38:16

CentOS vsft

2010-01-14 14:51:07

CentOS安裝配置

2012-10-11 14:59:31

CentosFastDFS

2011-02-23 09:55:33

Centos安裝vsftpd

2010-02-22 18:35:01

2012-06-13 09:56:53

點贊
收藏

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