手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

CentOS7搭建FTP服務(wù)

2018-11-28 21:44:46 14180

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

FTP 服務(wù)


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

FTP 用戶認(rèn)證

FTP 的用戶一共有三種類型

匿名用戶:ftp,anonymous,對(duì)應(yīng)Linux用戶ftp

系統(tǒng)用戶:Linux用戶,用戶/etc/passwd,密碼/etc/shadow

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

VSFTPD服務(wù)

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

用戶認(rèn)證配置文件:/etc/pam.d/vsftpd

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

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

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

系統(tǒng)用戶共享文件位置:用戶家目錄

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

VSFTPD服務(wù)配置

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

查看幫助文檔

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

man 5 vsftpd.conf 命令端口

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

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

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

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

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

pasv_min_port=6000 pasv_max_port=6010# 如果這個(gè)屬性指定為0的話,那么就隨機(jī)分配pasv_min_port=0 使用當(dāng)?shù)貢r(shí)間

設(shè)置是否使用當(dāng)?shù)貢r(shí)間。默認(rèn)就是YES.

use_localtime=YES 匿名用戶

是否支持匿名用戶

# YES 支持匿名用戶anonymous_enable=YES

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

no_anon_password=YES

匿名上傳。首先,文件系統(tǒng)上用戶的家目錄,要具備寫權(quán)限。其次,ftp服務(wù)器要開啟允許匿名上傳的配置。也就是說,ftp用戶的家家目錄需要進(jìn)行配置權(quán)限。

anon_upload_enable=YES

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

anon_mkdir_write_enable=YES

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

anon_world_readable_only=YES

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

anon_other_write_enable=YES

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

anon_umask=077

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

chown_uploads=YES(默認(rèn)NO)chown_username=wangchown_upload_mode=0644 系統(tǒng)用戶

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

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

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

是否允許Linux用戶登陸,默認(rèn)是允許的,當(dāng)然也可以禁止。

local_enable=YES

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

write_enable=YES

指定系統(tǒng)用戶上傳文件的默認(rèn)權(quán)限

local_umask=022

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

local_root=/ftproot 禁錮所有系統(tǒng)用戶在家目錄中

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

chroot_local_user=YES 禁錮或者不禁錮特定的用戶

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

chroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list wu-ftp日志:默認(rèn)啟用

wu-ftp日志,默認(rèn)安裝,默認(rèn)啟用。

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

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

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

登陸提示信息圖形界面是看不到的,只適用于ftp作為客戶端的時(shí)候。可以使用下面的方式來進(jìn)行配置。但是優(yōu)先級(jí)卻不一樣。

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

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

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

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

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

在黑名單中的用戶,連密碼提示都沒有。

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

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

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

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

nopriv_user=nobody 限定傳輸速率:字節(jié)/秒

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

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

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

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

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

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

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

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

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

查看是否支持SSL

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

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

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

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

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

虛擬用戶:

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

??各虛擬用戶可被賦予不同的訪問權(quán)限,通過匿名用戶的權(quán)限控制參數(shù)進(jìn)行指定。

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

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

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

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

?????? 實(shí)時(shí)查詢數(shù)據(jù)庫完成用戶認(rèn)證

?? mysql庫:pam要依賴于pam-mysql

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

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

實(shí)現(xiàn)基于文件驗(yàn)證的vsftpd虛擬用戶

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

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

二、創(chuàng)建系統(tǒng)用戶和訪問FTP目錄

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

# 創(chuàng)建系統(tǒng)用戶并指定家目錄useradd -d /var/ftproot -s /sbin/nologin vuser# 修改家目錄權(quán)限chmod +rx /var/ftproot/ #CentOS 7 中要做出一些特殊的配置 # 去掉家目錄寫權(quán)限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)行身份驗(yà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設(shè)置

如果對(duì)SELinux有什么特殊要求的話,可以單獨(dú)對(duì)SELinux進(jìn)行設(shè)置,如果沒有特殊要求的話,直接禁用SELinux就可以。

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

在vsftpd的配置文件中指定,用戶配置文件的存儲(chǔ)路徑,然后在/etc/目錄下,創(chuàng)建相應(yīng)的目錄,并且在目錄中定義與用戶名一致的配置文件并寫入相應(yīng)權(quán)限就可以了。
在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)建與用戶名同名的配置文件,例如用戶為tom,那么就創(chuàng)建一個(gè)與tom一致的配置文件。 將下面的內(nèi)容,寫入配置文件,就可以進(jìn)行權(quán)限控制。

# 虛擬用戶上傳權(quán)限anon_upload_enable=YES# 虛擬用戶創(chuàng)建文件夾anon_mkdir_write_enable=YES# 虛擬的其他用戶對(duì)指定用戶目錄的寫權(quán)限anon_other_write_enable=YES

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

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


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

這條文檔是否有幫助解決問題?

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

在文檔使用中是否遇到以下問題: