在CentOS 6.3 64bit上安装FTP服务器vsftpd 2.2.2
根據(jù)業(yè)務(wù)需要,要求支持ftp和sftp,我需要在Linux上架設(shè)一個(gè)ftp服務(wù)器,來存放CDN線上節(jié)點(diǎn)的用戶訪問日志。我選擇在CentOS?6.3?64bit上使用vsftpd來完成這個(gè)任務(wù),服務(wù)器ip是10.10.110.158。
sftp是與SSH相關(guān)的,與ftp沒有任何關(guān)系,我采用python中的paramiko模塊實(shí)現(xiàn)了一個(gè)包裝類,這里只談ftp。
下面是安裝詳細(xì)過程實(shí)錄,僅作參考。
1.檢查server上是否已經(jīng)安裝了vsftpd
rpm?-qa?|?grep?vsftpd
2.假如沒有相應(yīng)的vsftpd?rpm包,我們需要下載安裝
yum?install?vsftpd
3.添加虛擬主機(jī)用戶
業(yè)務(wù)要求:被限制用戶名為test,被限制路徑為/home/test
添加用戶test,用戶目錄指定為/home/test,且此用戶不能登陸系統(tǒng).
#useradd?–s?/sbin/nologin?–d?/home/test?test
注意-s?/sbin/nologin是讓其不能登陸系統(tǒng),-d是指定用戶主目錄為/home/test,如果不存在會(huì)自動(dòng)創(chuàng)建
#passwd?test
輸入密碼tao_627,并確認(rèn)
4.配置vsftpd配置文件,這里是關(guān)鍵點(diǎn)
# ls /etc/vsftpd/
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
首先了解vsftpd主配置文件vsftpd.conf,更全面的功能和選項(xiàng)介紹參見vsftpd.conf.5的man page頁面,使用命令行
man vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
修改對應(yīng)的值如下:
anonymous_enable=NO #禁止匿名用戶登錄,默認(rèn)允許?
local_enable=YES #允許本地實(shí)體用戶登錄?
write_enable=YES #允許用戶上傳數(shù)據(jù),開啟寫權(quán)限?
local_umask=022 #對本地用戶建立新目錄(755)與文件(644)的權(quán)限,上傳文件的權(quán)限掩碼 ?
dirmessage_enable=YES #若登錄目錄下有.message則會(huì)顯示該文件內(nèi)容 可以自己在登錄目錄下創(chuàng)建.message文件并寫入信息?
xferlog_enable=YES #啟動(dòng)日志文件記錄,默認(rèn)記錄于/var/log/vsftpd.log,可用使用vsftpd_log_file改寫?
xferlog_file=/var/log/xferlog
connect_from_port_20=YES #支持主動(dòng)式連接功能,默認(rèn)20,可用使用ftp_data_port指定為其他端口號?
xferlog_std_format=YES #支持WuFTP的日志文件格式?
local_root=/home/test #限制登錄用戶只能在/home/test目錄下操作,該用戶一登錄就切換到該目錄下面?
chroot_local_user=YES #禁用戶離開主目錄
chroot_list_enable=YES #不允許FTP用戶離開自己的主目錄
listen=YES #使用stand alone方式啟動(dòng)vsftpd?
pam_service_name=vsftpd #支持PAM模塊的管理
userlist_enable=YES #支持/etc/vsftpd/user_list文件內(nèi)的賬號登錄控制,禁止其登陸
tcp_wrappers=YES #支持TCP Wrappers的防火墻機(jī)制
這里為了安全,我們可以編輯 user_list這個(gè)文件,把禁止通過FTP登錄系統(tǒng)的賬號添加進(jìn)去。這樣的話,這些賬戶嘗試遠(yuǎn)程登錄的時(shí)候。會(huì)被拒絕登錄。
實(shí)際修改配置項(xiàng)如下
anonymous_enable=NO
xferlog_file=/var/log/xferlog
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
新建一個(gè)文件/etc/vsftpd/chroot_list,因?yàn)樯厦娴呐渲梦募?#xff0c;在其中增加test
開放21和20端口
修改iptables文件,然后保存重啟
vim /etc/sysconfig/iptables
5.添加系統(tǒng)服務(wù)vsftpd,讓系統(tǒng)服務(wù)隨著系統(tǒng)啟動(dòng)而啟動(dòng)
chkconfig?vsftpd?on
使用下面的命令查看修改是否成功
chkconfig?vsftpd?--list
啟動(dòng)vsftpd服務(wù),嘗試使用ftp傳輸文件。
service?vsftpd?start
查看系統(tǒng)端口狀態(tài):
netstat?-tulnp
如果能看到21端口正在被vsftpd調(diào)用說明啟動(dòng)成功。
6.安裝ftp客戶端組件(用來驗(yàn)證是否vsftpd)
yum?-y?install?ftp
執(zhí)行命令嘗試登陸
ftp?localhost
輸入用戶和密碼,如果登陸成功,說明ftp服務(wù)可用了。下面是最簡單的在線ftp功能測試
7.命令行操作示例
假設(shè)vsftpd所在的服務(wù)器的地址是10.10.110.158,在另外的機(jī)器上打開命令行(需要事先安裝ftp客戶端):
ftp?10.10.110.158
輸入用戶名test,密碼為tao_627
ftp>ls
ftp>put?/usr/local/src/Python-2.7.10.tgz?/home/test/Python-2.7.10.tgz
配置順利的話,現(xiàn)在就可以用ftp傳輸文件了。
8.ftp常用命令介紹
如果沒有遠(yuǎn)程機(jī)的專用登錄帳號,許多ftp站點(diǎn)設(shè)有可以使用的特殊帳號。這個(gè)帳號的登錄名為anonymous(也稱為匿名ftp),當(dāng)使用這一帳號時(shí),要求輸入email地址作為口令。
如果遠(yuǎn)程系統(tǒng)提供匿名ftp服務(wù),用戶使用這項(xiàng)服務(wù)可以登錄到特殊的,供公開使用的目錄。一般專門提供兩個(gè)目錄:pub目錄和incoming目錄。pub目錄包含該站點(diǎn)供公眾使用的所有文件,incoming目錄存放上載到該站點(diǎn)的文件。
一旦用戶使用ftp在遠(yuǎn)程站點(diǎn)上登錄成功,將得到“ftp>”提示符。現(xiàn)在可以自由使用ftp提供的命令,可以用?help命令取得可供使用的命令清單,也可以在?help命令后面指定具體的命令名稱,獲得這條命令的說明。
最常用的命令有:
ls?列出遠(yuǎn)程機(jī)的當(dāng)前目錄
cd?在遠(yuǎn)程機(jī)上改變工作目錄
lcd?在本地機(jī)上改變工作目錄
ascii?設(shè)置文件傳輸方式為ASCII模式
binary?設(shè)置文件傳輸方式為二進(jìn)制模式
close?終止當(dāng)前的ftp會(huì)話
hash?每次傳輸完數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)后就顯示一個(gè)#號
get(mget)?從遠(yuǎn)程機(jī)傳送指定文件到本地機(jī)
put(mput)?從本地機(jī)傳送指定文件到遠(yuǎn)程機(jī)
open?連接遠(yuǎn)程ftp站點(diǎn)
exit?斷開與遠(yuǎn)程機(jī)的連接并退出ftp
??顯示本地幫助信息
!?轉(zhuǎn)到Shell中
常用命令說明
◆啟動(dòng)ftp會(huì)話
open命令用于打開一個(gè)與遠(yuǎn)程主機(jī)的會(huì)話。該命令的一般格式是:
open?主機(jī)名/IP
如果在ftp?會(huì)話期間要與一個(gè)以上的站點(diǎn)連接,通常只用不帶參數(shù)的ftp命令。如果在會(huì)話期間只想與一臺計(jì)算機(jī)連接,那么在命令行上指定遠(yuǎn)程主機(jī)名或IP地址作為ftp命令的參數(shù)。
◆終止ftp會(huì)話
close、disconnect、和bye命令用于終止與遠(yuǎn)程機(jī)的會(huì)話。close和disronnect命令關(guān)閉與遠(yuǎn)程機(jī)的連接,但是使用戶留在本地計(jì)算機(jī)的ftp程序中。和bye命令都關(guān)閉用戶與遠(yuǎn)程機(jī)的連接,然后退出用戶機(jī)上的ftp?程序。
◆改變目錄
“cd?[目錄]”命令用于在ftp會(huì)話期間改變遠(yuǎn)程機(jī)上的目錄,lcd命令改變本地目錄,使用戶能指定查找或放置本地文件的位置。
◆遠(yuǎn)程目錄列表
ls命令列出遠(yuǎn)程目錄的內(nèi)容,就像使用一個(gè)交互shell中的ls命令一樣。ls命令的一般格式是:
ls?[目錄]?[本地文件]
如果指定了目錄作為參數(shù),那么ls就列出該目錄的內(nèi)容。如果給出一個(gè)本地文件的名字,那么這個(gè)目錄列表被放入本地機(jī)上您指定的這個(gè)文件中。
◆從遠(yuǎn)程系統(tǒng)獲取文件
get和mget命令用于從遠(yuǎn)程機(jī)上獲取文件。get命令的一般格式為:
get?文件名
您還可以給出本地文件名,這個(gè)文件名是這個(gè)要獲取的文件在您的本地機(jī)上創(chuàng)建時(shí)的文件名。如果您不給出一個(gè)本地文件名,那么就使用遠(yuǎn)程文件原來的名字。
mget命令一次獲取多個(gè)遠(yuǎn)程文件。mget命令的一般格式為:
mget?文件名列表
使用用空格分隔的或帶通配符的文件名列表來指定要獲取的文件,對其中的每個(gè)文件都要求用戶確認(rèn)是否傳送。
◆向遠(yuǎn)程系統(tǒng)發(fā)送文件
put和mput命令用于向遠(yuǎn)程機(jī)發(fā)送文件。Put命令的一般格式為:
put?文件名
mput命令一次發(fā)送多個(gè)本地文件,mput命令的一般格式為:
mput?文件名列表
使用用空格分隔的或帶通配符的文件名列表來指定要發(fā)送的文件。對其中的每個(gè)文件都要求用戶確認(rèn)是否發(fā)送。
◆改變文件傳輸模式
默認(rèn)情況下,ftp按ASCII模式傳輸文件,用戶也可以指定其他模式。ascii和brinary命令的功能是設(shè)置傳輸?shù)哪J健S肁SCII模式傳輸文件對純文本是非常好的,但為避免對二進(jìn)制文件的破壞,用戶可以以二進(jìn)制模式傳輸文件。
◆檢查傳輸狀態(tài)
傳輸大型文件時(shí),可能會(huì)發(fā)現(xiàn)讓ftp提供關(guān)于傳輸情況的反饋信息是非常有用的。hash命令使ftp在每次傳輸完數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)后,就在屏幕上打印一個(gè)#字符。本命令在發(fā)送和接收文件時(shí)都可以使用。
◆ftp中的本地命令
當(dāng)您使用ftp時(shí),字符“!”用于向本地機(jī)上的命令shell傳送一個(gè)命令。如果用戶處在ftp會(huì)話中,需要shell做某些事,就很有用。例如用戶要建立一個(gè)目錄來保存接收到的文件。如果輸入!mkdir?new_dir,那么Linux就在用戶當(dāng)前的本地目錄中創(chuàng)建一個(gè)名為new_dir?的目錄。
9.安裝中出現(xiàn)的問題
1.客戶端報(bào)
500?OOPS:?could?not?read?chroot()?list?file:/etc/vsftpd/vsftpd.chroot_list
解決方法:
查看vsftpd的配置,果然缺少這個(gè)文件,加上了啟動(dòng)成功。
2.ftplib.error_perm: 553 Could not create file.
10.參考文獻(xiàn)
[1]. http://www.2cto.com/os/201412/359964.html
[2]. http://www.php100.com/html/webkaifa/Linux/2009/0811/3169.html
總結(jié)
以上是生活随笔為你收集整理的在CentOS 6.3 64bit上安装FTP服务器vsftpd 2.2.2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用urllib2实现http post
- 下一篇: py-redis中的批量删除key方法