本篇內(nèi)容主要講解“CentOS怎么安裝配置vsftp虛擬用戶登錄”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“CentOS怎么安裝配置vsftp虛擬用戶登錄”吧!
成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站與策劃設(shè)計(jì),南溪網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:南溪等地區(qū)。南溪做網(wǎng)站價(jià)格咨詢:13518219792
在使用Linux時(shí),難免要進(jìn)行各種文件的遠(yuǎn)程傳輸,比如:網(wǎng)站的代碼,共享資源等,而這其中用的最多的傳輸方法大概就是FTP了。Linux下可用FTP服務(wù)端是非常多的,vsftp, proftp, uw-ftp等,其中vsftp流行度比較廣,沖著這個(gè),本人在自己的CentOS上也就選擇了vsftp,而且,vsftp支持PAM(pluggable authentication modules)下虛擬用戶設(shè)置,這正是Mitchell Chu比較喜歡的一種方式,接下來就請(qǐng)vsftp君上場(chǎng)。
Vsftp使用的用戶中,支持三種用戶模式,分別是:實(shí)體用戶,匿名用戶和虛擬用戶(guest
, 亦稱訪客身份)。實(shí)體用戶(Real User)是指用戶本身存在于系統(tǒng)中的用戶,他們存在于/etc/passwd和/etc/shadow文件中。匿名用戶(Anonymous)是指客戶 端無(wú)需提供任何用戶身份,ftp為訪問者提供一個(gè)名為anonymous的特殊用戶以供其使用。虛擬用戶(Virtual User)個(gè)人理解是一種介于實(shí)體用戶和匿名用戶之間的用戶。原因是:虛擬用戶雖然在系統(tǒng)的實(shí)體用戶文件中不存在,但是會(huì)在系統(tǒng)的其他地方進(jìn)行記錄(本文是Berkeley DB),以供vsftp用來對(duì)ftp訪問者進(jìn)行必要的鑒權(quán),而鑒權(quán)完畢之后,該用戶操作文件之時(shí),將是使用vsftp的運(yùn)行用戶ftp進(jìn)行的。由于實(shí)體用戶需要的是系統(tǒng)真實(shí)帳戶,開放這種權(quán)限無(wú)疑會(huì)增加系統(tǒng)的風(fēng)險(xiǎn),而虛擬用戶使用的是和實(shí)體用戶不同的用戶驗(yàn)證體系,并且,在系統(tǒng)中并不實(shí)際存在虛擬用戶到實(shí)體用戶的映射關(guān)系,因此降低了FTP給系統(tǒng)帶來的風(fēng)險(xiǎn)性,在實(shí)際生產(chǎn)環(huán)境中,虛擬用戶可以更加靈活的進(jìn)行獨(dú)立管理,比如:虛擬主機(jī)需要給用戶提供FTP帳 戶。有這么些好處之后,讓我們看看是如何配置吧!
預(yù)備式
Berkeley DB
數(shù)據(jù)庫(kù):用來存儲(chǔ)虛擬用戶的登錄信息。
pam_userdb.so
:用來驗(yàn)證虛擬用戶。
db4_utils
:用來轉(zhuǎn)換虛擬用戶到DB數(shù)據(jù)的工具。
安裝需要的包
CentOS中好像是默認(rèn)自帶vsftp的,因此,無(wú)需安裝,如果你不確認(rèn),可以用which
看下:
which vsftpd # 如果安裝好了的話,應(yīng)該是有類似下面的輸出: # /usr/sbin/vsftpd # 如果沒安裝,則類似下面的輸出 # /usr/bin/which: no xd in (/home/limituser...
沒有安裝的話,請(qǐng)安裝:
yum install vsftpd # 或者: yum -y install vsftpd
當(dāng)然,清空下yum
的緩存亦可:
pushd /etc/yum.repos.d/ rm -rf * wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo yum clean all yum -y install vsftpd ## 這句還是重點(diǎn).
為了簡(jiǎn)單,我們可以一次性安裝所有需要的包:
yum install db4-utils db4 vsftpd ## Mitchell Chu提醒:有的就不用再安裝了,請(qǐng)自行增減
創(chuàng)建虛擬用戶
虛擬用戶我們使用Berkeley DB數(shù)據(jù)庫(kù)來存儲(chǔ)。***步是創(chuàng)建純文本來添加用戶和密碼,用戶名和密碼各占一行。比如我們要?jiǎng)?chuàng)建:useasp
的用戶名,密碼是blog.useasp.net
,并且創(chuàng)建一個(gè)admin
密碼是adminpasswd
的用戶,那么,純文本將類似如下:
pushd /etc/vsftpd cat >vusers.txt useasp blog.useasp.net admin adminpasswd
創(chuàng)建好vusers.txt
后,我們需要的第二步是將純文本轉(zhuǎn)換為db文件,這時(shí)候需要使用到db_load
了:
db_load -T -t hash -f vusers.txt vsftpd-virtual-users.db
為了安全起見,記得設(shè)置僅root
可讀寫(當(dāng)前是root
):
chmod 600 vsftpd-virtual-users.db
再清理掉原來的純文本文件:
rm vusers.txt
此時(shí),我們已經(jīng)將需要登錄FTP的用戶已經(jīng)準(zhǔn)備好了,接下來就需要去配置vsftpd,讓vsftpd能夠正確的識(shí)別并支持已經(jīng)設(shè)置好虛擬用戶了。
VSFTPD虛擬用戶的配置
找到vsftpd.conf
配置文件,添加或修改下面這些配置選項(xiàng):
# 禁止匿名登錄 anonymous_enable=NO anon_upload_enable=YES anon_other_write_enable=YES # 啟用本地用戶 local_enable=YES # 虛擬用戶使用本地用戶權(quán)限 virtual_use_local_privs=YES # 可寫 write_enable=YES # PAM配置 pam_service_name=vsftpd # 啟用虛擬用戶 guest_enable=YES # 用戶后綴: 配合下面local_root使用,將會(huì)用登錄的用戶名替換掉$USER user_sub_token=$USER # 根目錄 local_root=/var/ftp/$USER # 啟用chroot,登錄后會(huì)被定位到指定根目錄 chroot_local_user=YES # 將所有的用戶和組顯示為ftp hide_ids=YES
vsftpd的配置文件是在/etc/vsftpd/vsftpd.conf
,原有配置項(xiàng)可以保留默認(rèn)值,如果需要日志,vsftpd有兩個(gè)日志可供使用,一個(gè)是標(biāo)準(zhǔn)xferlog格式的,一個(gè)是vsftpd格式的,可讀性后者更好,當(dāng)然,你也可以兩個(gè)日志都啟用,要啟用可以設(shè)置:xferlog_enable
, xferlog_std_format
, xferlog_file
, vsftpd_log_file
等參數(shù)以獲得需要的日志效果。
虛擬用戶的PAM配置
要針對(duì)虛擬用戶啟用PAM,我們還需要對(duì)PAM盡心配置,在上面的vsftpd配置文件中,我們使用pam_service_name
來配置了PAM將使用的配置文件,這個(gè)文件安裝后是默認(rèn)存在的,如果你覺得有必要保留原來的配置,可以先行備份一份,而后配置文件內(nèi)容改為如下:
#%PAM-1.0 auth required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users account required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users #session required pam_loginuid.so
要啟用session
可以將上面的#注釋掉,如果是在32位系統(tǒng)下,網(wǎng)上有一個(gè)配置方法是下面這種:
#%PAM-1.0 auth sufficient pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users account sufficient pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users
由于本人對(duì)Linux下的PAM并不是很了解,并不太了解required
和sufficient
的區(qū)別,這里不好做過多的論斷,有了解的可以指點(diǎn)一下,謝謝!
PAM配置里面,是指明賬戶保存的所在位置,我們配置文件里面的路徑即是前面使用db_load
創(chuàng)建的Berkeley DB的文件路徑。
創(chuàng)建FTP目錄
前面vsftpd已經(jīng)配置了ftp的目錄,我們需要先行創(chuàng)建FTP根目錄,和用戶需要的目錄,因?yàn)橐坏┻@些用戶登錄,將會(huì)被vsftpd重新定位到指定的home目錄下的,vsftpd中我們配置的是/var/ftp
,因此我們需要確認(rèn)此目錄是否存在,不存在我們就需要?jiǎng)?chuàng)建,而后,在此目錄下創(chuàng)建虛擬用戶的根目錄,目錄名稱就是用戶名稱。
mkdir -p /var/ftp/{useasp,admin} chown -R ftp:ftp /var/ftp
為了保證能夠順利讀取到文件,我們將根目錄下的所有文件都變成ftp這個(gè)用戶所有——ftp賬戶系統(tǒng)已經(jīng)默認(rèn)設(shè)置好了,vsftpd就是使用這個(gè)賬戶來操作的。
重啟FTP服務(wù),測(cè)試FTP
按上面的流程配置完后,我們就可以重新啟動(dòng)vsftpd服務(wù),讓新的配置生效——如果你沒有辦法使用此命令,請(qǐng)參看后面的省卻麻煩一節(jié),將vsftpd設(shè)置成為開機(jī)啟動(dòng)服務(wù):
service vsftpd restart
重啟之后,理論上來說,應(yīng)該就能使用FTP客戶端訪問FTP 到此,我們就已經(jīng)配置了一個(gè)可以正常訪問的FTP服務(wù)器了。 開啟防火墻,開放給別人用吧 上面測(cè)試正常后,如果你開啟了 上面的是我的 省卻麻煩 為了不用每次重啟之后都爬上機(jī)器上開啟FTP,我們可以將vsftpd設(shè)置為開機(jī)啟動(dòng)——如果系統(tǒng)已經(jīng)有了這個(gè)服務(wù),忽略: 至此,就差不多得到一個(gè)比較***的FTP Server了。 后記: 上面是配置vsftpd使用虛擬用戶的基本流程,但在配置中,我們總是能發(fā)現(xiàn)這樣或者那樣的問題,因此就需要我們不斷的去DEBUG整個(gè)流程,由于Linux中有SELinux的存在,很多問題的根源還是在于SELinux的設(shè)置,如果你需要簡(jiǎn)單快捷,那么使用下面這個(gè)命令即可解決大部分問題——網(wǎng)上很多朋友也正是這樣解決的: 當(dāng)然,如果你和Mitchell Chu一樣,也是個(gè)不愿意如此簡(jiǎn)單了事的人兒,那么,咱們繼續(xù)踏上征程……在按上面的方法配置好整個(gè)FTP服務(wù)器之后,本人也或多或少碰到如下的這些問題,現(xiàn)在匯集起來,方便后來者(若有時(shí)間,會(huì)展開來講,暫且記錄下): 1.不能定位到各自用戶的目錄,這個(gè)問題的存在,我們可以嘗試設(shè)置SELinux中的 2.不能列出FTP目錄內(nèi)容,這個(gè)問題也是SELinux引起的,可能的原因是vsftpd對(duì)于目錄并沒有權(quán)限,檢查下自己的權(quán)限是否正確,vsftpd使用的是ftp用戶訪問,看看自己是否設(shè)置錯(cuò)權(quán)限了? 你將看到類似如下的輸出: 可以看到,默認(rèn)的是 因?yàn)槲沂褂昧俗孕芯幾g的Python版本,導(dǎo)致 修正后,直接使用 4.不能上傳文件,不能創(chuàng)建文件夾,還是SELinux的問題啊,設(shè)置: 5.還不能上傳文件?試試: 這個(gè)和上面的設(shè)置差不多,只是權(quán)限更大,請(qǐng)謹(jǐn)慎操作! 到此,相信大家對(duì)“CentOS怎么安裝配置vsftp虛擬用戶登錄”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!iptables
,那么,記得添加規(guī)則,讓你的21,20端口,以后被動(dòng)模式時(shí)使用的端口范圍開放出來吧:iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 65300:65360 -j ACCEPT service iptables save
iptables
的配置,開放了21和20端口,20端口是ftp-data
用的,用來傳輸數(shù)據(jù)。chkconfig --levels 345 vsftpd on service vsftpd start
setenforce 0 # or setenforce Permissive
ftp_home_dir
來解決:setsebool -P ftp_home_dir on
3.還是不能列出目錄文件,再看看目標(biāo)文件夾的類型對(duì)不對(duì),一般需要的是public_content_r_t,如果你不確認(rèn),可以使用下面的命令查看:ls -alZ
drwxr-xr-x. root root system_u:object_r:public_content_t:s0 . drwxr-xr-x. root root system_u:object_r:var_t:s0 .. drwxr-xr-x. root root system_u:object_r:var_t:s0 useasp drwxr-xr-x. root root system_u:object_r:var_t:s0 admin
var_t
,我們需要設(shè)置一下,這里需要用到工具semanage
,如果沒有,需要安裝policycoreutils-python
:yum -y install policycoreutils-python
semanage
不能正常運(yùn)行,報(bào)錯(cuò):Traceback (most recent call last): File "/usr/sbin/semanage", line 23, in
semanage
來設(shè)置:restorecon -R -v /var/ftp/{useasp,admin}
setsebool -P allow_ftpd_anon_write on
semanage fcontext -a -t public_content_rw_t "/var/ftp(/.*)?" restorecon -R -v /var/ftp/{useasp,admin}
新聞名稱:CentOS怎么安裝配置vsftp虛擬用戶登錄
當(dāng)前網(wǎng)址:http://weahome.cn/article/ieohpo.html