10.1 ftp介紹
雨湖網(wǎng)站建設公司創(chuàng)新互聯(lián)建站,雨湖網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為雨湖上千提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿網(wǎng)站建設公司要多少錢,請找那個售后服務好的雨湖做網(wǎng)站的公司定做!網(wǎng)絡文件共享服務主流的主要有三種,分別是ftp、nfs、samba。在上一章中我們已經(jīng)了解了nfs,本章我們將來說說ftp。
FTP是File Transfer Protocol(文件傳輸協(xié)議)的簡稱,用于internet上的控制文件的雙向傳輸。
FTP也是一個應用程序,基于不同的操作系統(tǒng)有不同的FTP應用程序,而所有這些應用程序都遵守同一種協(xié)議以傳輸文件。
在FTP的使用當中,用戶經(jīng)常遇到兩種概念:下載和上傳
下載(Download)文件就是從遠程主機拷貝文件至自己的計算機上
上傳(Upload)文件就是將文件從自己的計算機上拷貝至遠程主機上。
10.2 ftp架構
FTP工作于應用層,監(jiān)聽于tcp的21號端口,是一種C/S架構的應用程序。其有多種客戶端和服務端的應用程序,下面來簡單介紹一下
Client:
ftp
lftp,lftpget
wget,curl
filezilla
gftp(Linux GUI)
商業(yè)軟件:flashfxp,cuteftp
Server:
wu-ftpd
proftpd:提供web接口的一種ftp服務端程序
pureftp
vsftpd:Very Secure
ServU:windows平臺的一種強大ftp服務端程序
10.3 ftp數(shù)據(jù)連接模式
ftp有2種數(shù)據(jù)連接模式:命令連接和數(shù)據(jù)連接
命令連接:是指文件管理類命令,始終在線的持久性連接,直到用戶退出登錄為止
數(shù)據(jù)連接:是指數(shù)據(jù)傳輸,按需創(chuàng)建及關閉的連接
其中數(shù)據(jù)連接需要關注的有2點,一是數(shù)據(jù)傳輸格式,二是數(shù)據(jù)傳輸模式
數(shù)據(jù)傳輸格式有以下兩種:
a) 文件傳輸
b) 二進制傳輸
數(shù)據(jù)傳輸模式也有2種:
a) 主動模式:由服務器端創(chuàng)建數(shù)據(jù)連接
b) 被動模式:由客戶端創(chuàng)建數(shù)據(jù)連接
下面來介紹下兩種數(shù)據(jù)傳輸模式的建立過程:
主動模式:
命令連接:
Client(1025)--> Server(21)客戶端以一個隨機端口(大于1023)來連服務器端的21號端口
數(shù)據(jù)連接:
Server(20/tcp) --> Client(1025+1) 服務器端以自己的20號端口去連客戶端創(chuàng)建命令連接時使用的隨機端口+1的端口號
此處有個弊端,因為客戶端的端口是隨機的,客戶端如果開了防火墻,則服務器端去連客戶端創(chuàng)建數(shù)據(jù)連接時可能會被拒絕
被動模式:
命令連接:
Client(1110) --> Server(21)客戶端以一個隨機端口來連成服務器端的21號端口
數(shù)據(jù)連接:
Client(1110+1) --> Server(隨機端口)客戶端以創(chuàng)建命令連接的端口+1的端口號去連服務器端通過命令連接告知自己的一個隨機端口號來創(chuàng)建數(shù)據(jù)連接
10.4 ftp響應碼
1xx:純信息的狀態(tài)碼
2xx:成功類的狀態(tài)碼
3xx:提示需進一步提供補充類信息的狀態(tài)碼
4xx:客戶端錯誤
5xx:服務端錯誤
10.5 用戶認證
ftp的用戶主要有三種:
a) 虛擬用戶:僅用于訪問某特定服務中的資源
b) 系統(tǒng)用戶:可以登錄系統(tǒng)的真實用戶
c) 匿名用戶
ftp的用戶認證主要通過nsswitch和pam來實現(xiàn),關于nsswitch和pam,請看此處
10.6 vsftpd
此處我們要說的ftp應用程序是vsftpd,這也是在公司中用得最多的一款ftp軟件。
本章主要說一下vsftpd的配置,關于安裝就不啰嗦了,請自行google
vsftpd用戶認證配置文件是/etc/pam.d/vsftpd
服務腳本為/etc/rc.d/init.d/vsftpd
配置文件目錄為/etc/vsftpd/,其中主配置文件為/etc/vsftpd/vsftpd.conf
匿名用戶(映射為ftp用戶)的共享資源位置是/var/ftp
系統(tǒng)用戶通過ftp訪問的資源位置為用戶的家目錄
虛擬用戶通過ftp訪問的資源位置為給虛擬用戶指定的映射成為的系統(tǒng)用戶的家目錄
10.7 vsftpd的常用配置
匿名用戶的配置:
anonymous_enable=YES啟用匿名用戶登錄
anon_upload_enable=YES允許匿名用戶上傳
anon_mkdir_write_enable=YES允許匿名用戶創(chuàng)建目錄,但是不能刪除
anon_other_write_enable=YES允許匿名用戶創(chuàng)建和刪除目錄
系統(tǒng)用戶的配置:
local_enable=YES啟用本地用戶登錄
write_enable=YES允許本地用戶有寫權限
local_umask=022通過ftp上傳文件的默認遮罩碼
chroot_local_user=YES禁錮所有的ftp本地用戶于其家目錄中
禁錮文件(/etc/vsftpd/chroot_list)中指定的ftp本地用戶于其家目錄中:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
虛擬用戶的配置:
所有的虛擬用戶會被統(tǒng)一映射為一個指定的系統(tǒng)帳號,訪問的共享位置即為此系統(tǒng)帳號的家目錄
各虛擬用戶可被賦予不同的訪問權限,通過匿名用戶的權限控制參數(shù)進行指定
虛擬用戶帳號的存儲方式:
a) 文件:編輯文件,此文件需要被編碼為hash格式。
奇數(shù)行為用戶名
偶數(shù)行為密碼
b) 關系型數(shù)據(jù)庫的表中:
通過即時查詢數(shù)據(jù)庫完成用戶認證
mysql庫:pam要依賴于pam_mysql軟件,可以通過epel源yum安裝
日志配置:
xferlog_enable=YES是否啟用傳輸日志,記錄ftp傳輸過程
xferlog_std_format=YES傳輸日志是否使用標準格式
xferlog_file=/var/log/xferlog指定傳輸日志存儲的位置
改變上傳文件的屬主:自動將客戶端上傳到服務器的某文件的屬主改為指定的用戶
chown_uploads=YES是否啟用改變上傳文件屬主的功能
chown_username=whoever 指定要將上傳的文件的屬主改為哪個用戶,此用戶必須在系統(tǒng)中存在
vsftpd使用pam完成用戶認證,其用到的pam配置文件:
pam_service_name=vsftpd指定vsftpd使用/etc/pam.d下的哪個pam配置文件進行用戶認證
是否啟用控制用戶登錄的列表文件:默認為/etc/vsftpd/user_list文件
userlist_enable=YES
userlist_deny=YES是否拒絕userlist指定的列表文件中存在的用戶登錄ftp
連接限制:
max_clients=#大并發(fā)連接數(shù)
max_per_ip=#每個IP可同時發(fā)起的并發(fā)請求數(shù)
傳輸速率:
anon_max_rate匿名用戶的大傳輸速率,單位是“字節(jié)/秒”
local_max_rate本地用戶的大傳輸速率,單位是“字節(jié)/秒”
通用配置:
dirmessage_enable=YES啟用某目錄下的.message描述信息
假定有一個目錄為/upload,在其下創(chuàng)建一個文件名為.message,在文件內寫入一些描述信息,則當用戶切換至/upload目錄下時會自動顯示.message文件中的內容
message_file設置訪問一個目錄時獲得的目錄信息文件的文件名,默認是.message
idle_session_timeout=600設置默認的斷開不活躍session的時間
data_connection_timeout=120設置數(shù)據(jù)傳輸超時時間
ftpd_banner=Welcome to chenlf FTP service.定制歡迎信息,登錄ftp時自動顯示
10.8 vsftpd虛擬用戶配置
vsftpd虛擬用戶的配置步驟如下,這里使用mysql進行用戶認證
a) 安裝所需要的程序
yum -y install vsftpd mysql-server mysql-devel pam_mysql注意:pam_mysql由epel源提供
b) 創(chuàng)建虛擬用戶帳號
準備數(shù)據(jù)庫及相關表:首先確保mysql服務已經(jīng)正常啟動。而后,按需要建立存儲虛擬用戶的數(shù)據(jù)庫即可,這里將其創(chuàng)建為vsftpd數(shù)據(jù)庫
mysql> CREATE DATABASE vsftpd; mysql> GRANT SELECT ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'Your password'; mysql> GRANT SELECT ON vsftpd.* TO 'vsftpd'@'127.0.0.1' IDENTIFIED BY 'Your password'; mysql> FLUSH PRIVILEGES; mysql> use vsftpd; mysql> CREATE TABLE users ( id int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name char(20) binary NOT NULL, password char(48) binary NOT NULL );添加測試的虛擬用戶:根據(jù)需要添加所需要的用戶,需要說明的是,這里將其密碼為了安全起見應使用PASSWORD函數(shù)加密后存儲
mysql> INSERT INTO users(name,password) values('tom',password('Your password')); mysql> INSERT INTO users(name,password) values('jerry',password('Your password'));c) 配置vsftpd
建立pam認證所需文件,編輯/etc/pam.d/vsftpd.mysql文件,添加如下兩行:
auth required /lib64/security/pam_mysql.so user=vsftpd passwd='Your password' host=mysqldb_ip db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 account required /lib64/security/pam_mysql.so user=vsftpd passwd='Your password' host=mysqldb_ip db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2注意:由于mysql的安裝方式不同,pam_mysql.so基于unix sock連接mysql服務器時可能會出問題,此時,建立授權一個可遠程連接的mysql并訪問vsftpd數(shù)據(jù)庫的用戶
修改vsftpd的配置文件/etc/vsftpd/vsftpd.conf,使其適應mysql認證
建立虛擬用戶映射的系統(tǒng)用戶及對應的目錄:
建立虛擬用戶映射的系統(tǒng)用戶及對應的目錄:
useradd -s /sbin/nologin -d /var/ftproot vuser chmod go+rx /var/ftproot/請確保/etc/vsftpd/vsftpd.conf中已經(jīng)啟用了以下選項:
anonymous_enable=YES local_enable=YES write_enable=YES anon_upload_enable=NO anon_mkdir_write_enable=NO chroot_local_user=YES而后添加以下選項:
guest_enable=YES guest_username=vuser并確保pam_service_name選項的值如下所示:
pam_service_name=vsftpd.mysqld) 啟動vsftpd服務并查看端口開啟情況
service vsftpd start chkconfig vsftpd on ss -tnlp|grep 21e) 配置虛擬用戶具有不同的訪問權限
vsftpd可以在配置文件目錄中為每個用戶提供單獨的配置文件以定義其ftp服務訪問權限,每個虛擬用戶的配置文件名同虛擬用戶的用戶名。
配置文件目錄可以是任意未使用目錄,只需要在vsfptd.conf中指定其路徑及名稱即可
編輯vsftpd.conf文件,添加如下選項
user_config_dir=/etc/vsftpd/vusers_config創(chuàng)建所需要的目錄,并為虛擬用戶提供配置文件
mkdir /etc/vsftpd/vusers_config cd /etc/vsftpd/vusers_config touch tom jerry配置虛擬用戶的訪問權限
虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關指令進行的。
比如,如果需要讓tom用戶具有上傳文件的權限,可以修改/etc/vsftpd/vusers_config/tom文件,添加如下選項即可:
anon_upload_enable={YES|NO} anon_mkdir_write_enable={YES|NO} anon_other_write_enable={YES|NO}Linux下好用的下載工具:
axel:可實現(xiàn)多線程下載,斷點續(xù)傳等功能,下載速度超快
lftpget
wget
curl
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。