国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

CentOS7搭建FTP服務(wù)

2018-11-28 21:44:46 7490

CentOS7上搭建FTP服務(wù)+VSFTPD

FTP 服務(wù)


?? FTP是早期的應用級協(xié)議之一,是一種基于C/S結構的雙通道協(xié)議。
?? 可以作為FTP服務(wù)器的軟件有很多,比如Wu-ftpd,Proftpd,Pureftpd,ServU,IIS,都可以。其中vsftpd是CentOS默認的FTP服務(wù)器。也是我們今天的主角,接下來(lái)將會(huì )進(jìn)行重點(diǎn)介紹。??既然是一種C/S結構的應用,有服務(wù)端就會(huì )有客戶(hù)端。在Linux平臺上可以作為FTP客戶(hù)端的軟件也有很多,諸如ftp,lftp,lftpget,wget,curl等。在Windows上也有很多的圖形界面客戶(hù)端,例如 filezilla,CuteFtp,FlashFXP,LeapFtp 等。

FTP 用戶(hù)認證

FTP 的用戶(hù)一共有三種類(lèi)型

匿名用戶(hù):ftp,anonymous,對應Linux用戶(hù)ftp

系統用戶(hù):Linux用戶(hù),用戶(hù)/etc/passwd,密碼/etc/shadow

虛擬用戶(hù):特定服務(wù)的專(zhuān)用用戶(hù),獨立的用戶(hù)名/密碼文件

VSFTPD服務(wù)

vsftpd 服務(wù),由vsftpd包提供,直接使用yum安裝就可以。

用戶(hù)認證配置文件:/etc/pam.d/vsftpd

服務(wù)腳本: /usr/lib/systemd/system/vsftpd.service,/etc/rc.d/init.d/vsftp

配置文件:/etc/vsftpd/vsftpd.conf

匿名用戶(hù)(映射為系統用戶(hù)ftp )共享文件位置:/var/ftp

系統用戶(hù)共享文件位置:用戶(hù)家目錄

虛擬用戶(hù)共享文件位置:為其映射的系統用戶(hù)的家目錄

VSFTPD服務(wù)配置

vsftpd 服務(wù)配置 大多數都在配置文件/etc/vsftpd/vsftpd.conf中,所以我們的大部分配置只要修改這個(gè)文件就可以。

查看幫助文檔

可以使用man命令查看配置文件的幫助文檔,查看有哪些選項是我們需要的,以及各種值分別代表什么含義。

man 5 vsftpd.conf 命令端口

ftp默認端口是21端口,如果配置文件中沒(méi)有明確指定的話(huà),就是21端口。當然也可以明確指定,或者指定為別的端口。在配置文件中添加下面這一行就可以。

listen_port=21 主動(dòng)模式端口

ftp 的鏈接方式有兩種,分別是主動(dòng)模式和被動(dòng)模式。這兩種模式都是從服務(wù)器的角度來(lái)查看和定義的。

# 這這里的選項一直定義為YES就可以。# 如果不寫(xiě)這一行,默認的也是YESconnect_from_port_20=YES # 如果要重新定義主動(dòng)模式的端口為其他的值的話(huà),那就再加上下面行,并指定端口值ftp_data_port=2020 被動(dòng)模式端口范圍

linux客戶(hù)端默認使用被動(dòng)模式,windows 客戶(hù)端默認使用主動(dòng)模式。在配置文件中加入下面兩行,代表可以定義被動(dòng)模式的端口范圍。

pasv_min_port=6000 pasv_max_port=6010# 如果這個(gè)屬性指定為0的話(huà),那么就隨機分配pasv_min_port=0 使用當地時(shí)間

設置是否使用當地時(shí)間。默認就是YES.

use_localtime=YES 匿名用戶(hù)

是否支持匿名用戶(hù)

# YES 支持匿名用戶(hù)anonymous_enable=YES

匿名用戶(hù)略過(guò)口令檢查,默認為no。如果為YES的時(shí)候,匿名用戶(hù)登陸時(shí),不會(huì )提示用戶(hù)名和密碼,直接登陸。如果為NO的話(huà),匿名用戶(hù)登陸時(shí)還是會(huì )提示輸入密碼,只不過(guò),系統不會(huì )再去驗證密碼的正確性。系統默認的匿名賬戶(hù)有兩個(gè),分別是ftp和anonymous。

no_anon_password=YES

匿名上傳。首先,文件系統上用戶(hù)的家目錄,要具備寫(xiě)權限。其次,ftp服務(wù)器要開(kāi)啟允許匿名上傳的配置。也就是說(shuō),ftp用戶(hù)的家家目錄需要進(jìn)行配置權限。

anon_upload_enable=YES

匿名用戶(hù)能夠創(chuàng )建目錄。這一點(diǎn)與匿名上傳一樣,不僅需要注意服務(wù)的配置,同時(shí)需要注意用戶(hù)的家目錄權限。

anon_mkdir_write_enable=YES

默認只能下載全部讀的文件。這句話(huà)的意思是說(shuō),如果啟動(dòng)了這句話(huà),則匿名用戶(hù)只能下載所有用戶(hù)都具備讀權限的文件。如果有一個(gè)文件,有一個(gè)用戶(hù)不劇本讀權限,匿名用戶(hù)就不能夠下載。

anon_world_readable_only=YES

匿名用戶(hù)能否刪除和修改上傳的文件。默認是no,也就是不可以。

anon_other_write_enable=YES

指定匿名上傳文件的umask值。umask的值可以直接影響到上傳文件的權限。

anon_umask=077

指定上傳文件的默認的所有者和權限。 完成了這些指定之后,匿名用戶(hù)上傳的元數據就是我們指定的那些內容。

chown_uploads=YES(默認NO)chown_username=wangchown_upload_mode=0644 系統用戶(hù)

默認情況下,操作系統的賬戶(hù)是可以直接使用用戶(hù)名和密碼來(lái)登陸的。并且登陸成功之后,默認進(jìn)入到了自己的家目錄。

所有系統用戶(hù)都映射成guest用戶(hù),但是映射的guest賬戶(hù),需要人為地去指定下。同時(shí)這個(gè)guest賬戶(hù)與匿名賬戶(hù)類(lèi)似,不允許家目錄具有寫(xiě)權限,否則容易導致安全隱患。

guest_enable=YES#配合上面選項才生效,指定guest用戶(hù)guest_username=ftp

是否允許Linux用戶(hù)登陸,默認是允許的,當然也可以禁止。

local_enable=YES

是否允許Linux用戶(hù)上傳文件,如果用戶(hù)默認允許登陸的話(huà),linux用戶(hù)登陸成功之后,默認位于自己的家目錄,這時(shí)是允許上傳文件的。 如果將下面的這句話(huà),改成no,則服務(wù)拒絕linux用戶(hù)上傳文件,即便位于自己的家目錄也不可以。

write_enable=YES

指定系統用戶(hù)上傳文件的默認權限

local_umask=022

非匿名用戶(hù)登錄所在目錄,當使用Linux用戶(hù)登陸成功之后,就不會(huì )默認在自己的家目錄了。相反,會(huì )位于下面指定的目錄里。

local_root=/ftproot 禁錮所有系統用戶(hù)在家目錄中

禁錮所有的用戶(hù)在家目錄中的意思是說(shuō),用戶(hù)登陸成功之后,不能夠隨意切換目錄,只能夠在自己的家目錄中進(jìn)行操作。 服務(wù)默認是NO,也就是不禁錮,這樣的話(huà),有比較大的安全隱患。

chroot_local_user=YES 禁錮或者不禁錮特定的用戶(hù)

可以針對某一些用戶(hù)進(jìn)行單獨的設置,例如對某一些用戶(hù)進(jìn)行禁錮,而對另外一些用戶(hù)進(jìn)行禁錮。 
在/etc/vsftpd/chroot_list文件中,指定需要做出特殊處理的用戶(hù)。當chroot_list_enable選項為YES的時(shí)候,列表中的用戶(hù)不被禁錮。而不在列表中的用戶(hù)則被禁錮。反之,則相反。

chroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list wu-ftp日志:默認啟用

wu-ftp日志,默認安裝,默認啟用。

xferlog_enable=YES (默認)啟用記錄上傳下載日志xferlog_std_format=YES (默認)使用wu-ftp日志格式xferlog_file=/var/log/xferlog (默認)可自動(dòng)生成 vsftpd日志:默認不啟用

vsftpd日志,默認不啟用,如果想要啟用的話(huà),應該手動(dòng)進(jìn)行配置修改。

#使用vsftpd日志格式,默認不啟用dual_log_enable=YES #(默認)可自動(dòng)生成vsftpd_log_file=/var/log/vsftpd.log 登錄提示信息

登陸提示信息圖形界面是看不到的,只適用于ftp作為客戶(hù)端的時(shí)候??梢允褂孟旅娴姆绞絹?lái)進(jìn)行配置。但是優(yōu)先級卻不一樣。

ftpd_banner=“welcome to mage ftp server"這一句話(huà)優(yōu)先生效banner_file=/etc/vsftpd/ftpbanner.txt 目錄訪(fǎng)問(wèn)提示信息

當用戶(hù)進(jìn)入到某一個(gè)目錄之后,可以給用戶(hù)一個(gè)提示消息。用來(lái)提示這個(gè)目錄的作用。在相應的目錄下建立一個(gè)隱藏文件 .message,在該文件中進(jìn)行信息提示描述。

dirmessage_enable=YES (默認)message_file=.message(默認) 使用pam(Pluggable Authentication Modules)完成用戶(hù)認證

pam模塊是Linux中的一種安全驗證機制。所以vsftpd也可以根據pam模塊進(jìn)行用戶(hù)的認證。pam的配置文件/etc/pam.d/vsftpd,在這個(gè)文件中指定了默認文件/etc/vsftpd/ftpusers 默認文件中用戶(hù)拒絕登錄.而vaftpd配置文件中,定義了pam模塊。

pam_service_name=vsftpd 是否啟用控制用戶(hù)登錄的列表文件

在黑名單中的用戶(hù),連密碼提示都沒(méi)有。

# 默認有此設置# YES的時(shí)候啟用了userlistuserlist_enable=YES# YES(默認值)黑名單,不提示口令,NO為白名單userlist_deny=YESuserlist_file=/etc/vsftpd/users_list 此為默認值 連接限制

鏈接限制,可以指定鏈接用戶(hù)的最大數量,也就是最大的并發(fā)鏈接數。

# 最大并發(fā)連接數# 如果為0的話(huà),默認不限制max_clients=0 # 每個(gè)IP同時(shí)發(fā)起的最大連接數# 如果為0的話(huà),則默認不限制數量max_per_ip=0 vsftpd服務(wù)指定用戶(hù)身份運行

vsftpd服務(wù)啟動(dòng)時(shí)要開(kāi)啟相應的進(jìn)程,那么相應的進(jìn)程就有一定的用戶(hù)身份。如果指定了,那么服務(wù)啟動(dòng)之后,就會(huì )以指定的用戶(hù)來(lái)啟動(dòng)服務(wù)進(jìn)程。

nopriv_user=nobody 限定傳輸速率:字節/秒

如果在上傳和下載的過(guò)程中,沒(méi)有對速率進(jìn)行限制,很容易對服務(wù)器造成損壞。所以最好進(jìn)行一下限定。注意單位是 字節

# 匿名用戶(hù)的最大傳輸速率# 如果為0的話(huà),則默認不限制anon_max_rate=0 # 本地用戶(hù)的最大傳輸速率# 如果為0的話(huà),則默認不限制local_max_rate=0 限定鏈接時(shí)間:秒

指定用戶(hù)連接到ftp服務(wù)器上的時(shí)間。時(shí)間單位是秒,這樣做的好處是,如果用戶(hù)連接到服務(wù)器之后,卻不做任何操作的話(huà),很容易浪費資源。這樣是一種浪費。

# 主動(dòng)模式數據連接超時(shí)時(shí)長(cháng)connect_timeout=60# 被動(dòng)模式數據連接超時(shí)時(shí)長(cháng)accept_timeout=60 # 數據連接無(wú)數據輸超時(shí)時(shí)長(cháng)data_connection_timeout=300 # 無(wú)命令操作超時(shí)時(shí)長(cháng)idle_session_timeout=60 優(yōu)先以文本方式傳輸

文件在傳輸的過(guò)程中,可以指定是以文本方式傳輸,還是以二進(jìn)制的方式傳輸。默認是以二進(jìn)制的形式進(jìn)行傳輸。這里有一點(diǎn)需要注意,如果指定了以文本方式傳輸的話(huà),Linux平臺和Windows平臺對文本的處理方式是不一樣的,打個(gè)比方說(shuō),Linux平臺上回車(chē)符是一個(gè)字節,但是在Windows的平臺上是兩個(gè)字節,也就是CRLF,這樣也就導致,如果在Windows平臺上使用客戶(hù)端從Linux上FTP服務(wù)器下載文件,Windows會(huì )自動(dòng)對文本進(jìn)行轉化的,反之也是一樣。
如果我們傳輸一個(gè)二進(jìn)制文件的話(huà),二進(jìn)制文件應該就會(huì )被破壞掉。

ascii_upload_enable=YESascii_download_enable=YES 配置FTP服務(wù)以非獨立服務(wù)方運行:listen=NO,默認為獨立方式

FTP服務(wù)既可以作為獨立服務(wù)運行,也可以作為非獨立服務(wù)進(jìn)行運行。所謂非獨立服務(wù),指的就是使用xinetd服務(wù)代替FTP服務(wù)來(lái)監聽(tīng)21端口,當有用戶(hù)訪(fǎng)問(wèn)FTP服務(wù)的時(shí)候,xinetd服務(wù)就會(huì )自動(dòng)啟動(dòng)FTP服務(wù),并提供給用戶(hù)訪(fǎng)問(wèn)。
listen=YES,表示以獨立的服務(wù)運行,listen=no表示以非獨立的服務(wù)進(jìn)行運行。

cat /etc/xinetd.d/vsftpdservice ftp{flags = REUSEsocket_type = streamwait = nouser = rootserver = /usr/sbin/vsftpdlog_on_failure += USERIDdisable = no} 實(shí)現基于SSL的FTPS

FTP服務(wù),默認用戶(hù)登陸時(shí)的口令是明文的。這樣很容易被獲取到,那么vsftpd服務(wù)是否支持SSL來(lái)進(jìn)行加密呢?

查看是否支持SSL

# 使用下面的命令能夠查看到是否支持SSL# 查看到libssl.soldd `which vsftpd`

創(chuàng )建自簽名證書(shū)

# 進(jìn)入到證書(shū)路徑cd /etc/pki/tls/certs/# 使用下面的命令生成證書(shū)私鑰和證書(shū)make vsftpd.pemopenssl x509 -in vsftpd.pem -noout –text

配置vsftpd服務(wù)支持SSL:/etc/vsftpd/vsftpd.conf

# 啟用SSLssl_enable=YES # 匿名不支持SSLallow_anon_ssl=NO # 本地用戶(hù)登錄加密force_local_logins_ssl=YES # 本地用戶(hù)數據傳輸加密force_local_data_ssl=YES# 指定證書(shū)路徑rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem vsftpd虛擬用戶(hù)

虛擬用戶(hù):

??所有虛擬用戶(hù)會(huì )統一映射為一個(gè)指定的系統帳號:訪(fǎng)問(wèn)共享位置,即為此系統帳號的家目錄。

??各虛擬用戶(hù)可被賦予不同的訪(fǎng)問(wèn)權限,通過(guò)匿名用戶(hù)的權限控制參數進(jìn)行指定。

虛擬用戶(hù)帳號的存儲方式:
?? 文件:編輯文本文件,此文件需要被編碼為hash格式

?????? 奇數行為用戶(hù)名,偶數行為密碼

?????? db_load -T -t hash -f vusers.txt vusers.db

?? 關(guān)系型數據庫中的表中:

?????? 實(shí)時(shí)查詢(xún)數據庫完成用戶(hù)認證

?? mysql庫:pam要依賴(lài)于pam-mysql

?????? /lib64/security/pam_mysql.so

?????? /usr/share/doc/pam_mysql-0.7/README

實(shí)現基于文件驗證的vsftpd虛擬用戶(hù)

一、創(chuàng )建用戶(hù)數據庫文件

# 創(chuàng )建用戶(hù)文件vim /etc/vsftpd/vusers.txtftp1 用戶(hù)名ftp1pass 密碼tom 用戶(hù)名tompass 密碼# 進(jìn)入到相應的目錄下cd /etc/vsftpd/# 創(chuàng )建數據庫文件db_load -T -t hash -f vusers.txt vusers.db# 修改數據庫權限chmod 600 vusers.db

二、創(chuàng )建系統用戶(hù)和訪(fǎng)問(wèn)FTP目錄

虛擬用戶(hù)訪(fǎng)問(wèn)FTP服務(wù)器的時(shí)候,要進(jìn)入到自己的家目錄下,但是系統中沒(méi)有虛擬賬戶(hù)所對應的賬號家目錄,所以我們要創(chuàng )建一個(gè)系統用戶(hù),與虛擬賬戶(hù)關(guān)聯(lián)起來(lái),這樣,當虛擬用戶(hù)登陸之后,就會(huì )進(jìn)入到我們創(chuàng )建的系統用戶(hù)的家目錄,然后進(jìn)行數據訪(fǎng)問(wèn)。
對于CentOS7,家目錄有寫(xiě)權限,用戶(hù)在登陸的時(shí)候會(huì )出錯的。所以要做一些特殊處理

# 創(chuàng )建系統用戶(hù)并指定家目錄useradd -d /var/ftproot -s /sbin/nologin vuser# 修改家目錄權限chmod +rx /var/ftproot/ #CentOS 7 中要做出一些特殊的配置 # 去掉家目錄寫(xiě)權限chmod -w /var/ftproot/mkdir /var/ftproot/uploadsetfacl -m u:vuser:rwx /var/ftproot/upload

三、創(chuàng )建pam配置文件

修改vsftpd的pam模塊的配置文件 /etc/pam.d/vsftpd.db ,讓vsftpd支持pam模塊進(jìn)行身份驗證。

auth required pam_userdb.so db=/etc/vsftpd/vusersaccount required pam_userdb.so db=/etc/vsftpd/vusers

四、指定pam配置文件

修改vsftpd的配置文件 /etc/vsftpd/vsftpd.conf ,給vsftpd指定pam模塊。

guest_enable=YESguest_username=vuserpam_service_name=vsftpd.db

五、SELinux設置

如果對SELinux有什么特殊要求的話(huà),可以單獨對SELinux進(jìn)行設置,如果沒(méi)有特殊要求的話(huà),直接禁用SELinux就可以。

六、虛擬用戶(hù)建立獨立的配置文件

在vsftpd的配置文件中指定,用戶(hù)配置文件的存儲路徑,然后在/etc/目錄下,創(chuàng )建相應的目錄,并且在目錄中定義與用戶(hù)名一致的配置文件并寫(xiě)入相應權限就可以了。
在vsftpd的配置文件 /etc/vsftpd/vsftpd.conf 中指定如下路徑.

user_config_dir=/etc/vsftpd/vusers.d/

在etc目錄下,創(chuàng )建如下的文件目錄,這一個(gè)目錄與前面在vsftpd配置文件中定義的一致。

mdkir /etc/vsftpd/vusers.d/

進(jìn)入到/etc/vsftpd/vusers.d/ 目錄下,創(chuàng )建與用戶(hù)名同名的配置文件,例如用戶(hù)為tom,那么就創(chuàng )建一個(gè)與tom一致的配置文件。 將下面的內容,寫(xiě)入配置文件,就可以進(jìn)行權限控制。

# 虛擬用戶(hù)上傳權限anon_upload_enable=YES# 虛擬用戶(hù)創(chuàng )建文件夾anon_mkdir_write_enable=YES# 虛擬的其他用戶(hù)對指定用戶(hù)目錄的寫(xiě)權限anon_other_write_enable=YES

或者還可以改變用戶(hù)的默認登陸目錄。也就是FTP用戶(hù)登陸成功之后的默認路徑。

#登錄目錄改變至指定的目錄local_root=/ftproot


提交成功!非常感謝您的反饋,我們會(huì )繼續努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題:
-->