一:簡介
FTP是File Transfer Protocol(檔案傳輸協定)的縮寫,用來在兩台計算機之間互相傳送檔案。相比于HTTP,FTP協定要複雜得多。複雜的原因,是因為FTP協定要用到兩個TCP連接配接,一個是指令鍊路,用來在FTP用戶端與伺服器之間傳遞指令;另一個是資料鍊路,用來上傳或下載下傳資料。
FTP協定有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。
PORT(主動)方式的連接配接過程是:用戶端向伺服器的FTP端口(預設是21)發送連接配接請求,伺服器接受連接配接,建立一條指令鍊路。 當需要傳送資料時,用戶端在指令鍊路上用 PORT指令告訴伺服器:“我打開了****端口,你過來連接配接我”。于是伺服器從20端口向用戶端的****端口發送連接配接請求,建立一條資料鍊路來傳送資料。
PASV(被動)方式的連接配接過程是:用戶端向伺服器的FTP端口(預設是21)發送連接配接請求,伺服器接受連接配接,建立一條指令鍊路。 當需要傳送資料時,伺服器在指令鍊路上用 PASV指令告訴用戶端:“我打開了****端口,你過來連接配接我”。于是用戶端向伺服器的****端口發送連接配接請求,建立一條資料鍊路來傳送資料。
從上面可以看出,兩種方式的指令鍊路連接配接方法是一樣的,而資料鍊路的建立方法就完全不同。而FTP的複雜性就在于此。
vsftp提供3種遠端的登入方式:
(1)匿名登入方式
就是不需要使用者名,密碼。就能登入到伺服器電腦裡面
(2)本地使用者方式
需要帳戶名和密碼才能登入。而且,這個帳戶名和密碼,都是在你linux系統裡面,已經有的使用者。
(3)虛拟使用者方式
同樣需要使用者名和密碼才能登入。但是和上面的差別就是,這個使用者名和密碼,在你linux系統中是沒有的(沒有該使用者帳号)
二:安裝
1、配置相關服務
啟動服務:
[root@localhost root]#yum install vsftpd;安裝vsftpd服務
#/etc/init.d/vsftpd start ;啟動服務
#chkconfig --level 235 vsftpd on ;讓系統服務随着系統啟動而啟動
配置相關文檔:
#vi /etc/vsftpd/vsftpd.conf
######### 核心設定 ###########
local_enable=YES # 允許本地使用者登入
write_enable=YES # 本地使用者的寫權限
local_root=/home #系統賬戶對應的ftp根目錄
local_umask=027 #設定上傳檔案的權限(777減去此數的權限)
local_max_rate=3000000 #限制系統使用者傳輸速率,機關bite
dirmessage_enable=YES # 切換目錄時,是否顯示目錄下.message的内容
dirlist_enable = NO
pam_service_name=vsftpd #vsftpd驗證方式
connect_from_port_20=YES #啟用FTP資料端口的資料連接配接
listen=YES #以獨立的FTP服務運作
listen_port=2121 # 修改連接配接端口,預設值為21。
ftp_data_port=2020 # 修改資料端口,預設值為20。此參數用于PORT FTP模式。
port_enable=YES #如果你要在資料連接配接時取消PORT模式時,設此選項為NO。預設值為YES
port_promiscuous=NO #取消PORT安全檢查。該檢查確定外出的資料隻能連接配接到用戶端上。小心打開此選項
#async_abor_enable=NO #設定支援異步傳輸功能。
#ascii_upload_enable=YES #設定支援ASCII模式的上傳功能。
#ascii_download_enable=YES #設定支援ASCII模式的下載下傳功能。
######### 匿名登入設定 ###########
anonymous_enable=NO #禁止匿名
anon_root=/data #匿名賬戶對應的ftp根目錄
anon_upload_enable=YES #如果允許匿名登入,是否允許虛拟使用者和匿名使用者上傳
anon_mkdir_write_enable=YES #如果允許匿名登入,是否允許匿名建立檔案夾并在檔案夾内上傳檔案
anon_other_write_enable=YES #如果允許匿名登入,允許虛拟使用者和匿名使用者修改檔案名和删除檔案
anon_max_rate=30000 #如果允許匿名登入,限制匿名使用者傳輸速率,機關bite
######### 使用者限制設定 ###########
#### 限制登入
userlist_enable=yes # 用userlist來限制使用者通路
userlist_deny=no # YES禁止檔案中的使用者登入,NO,隻允許在檔案中的使用者登入FTP伺服器。
userlist_file=/etc/vsftpd.user_list # 被讀取的包含使用者清單的檔案
#### 限制目錄
chroot_list_enable=NO # 鎖定某些使用者在自家目錄中,是否調用限制在家目錄的使用者名單
chroot_local_user=YES # 是否限制所有使用者都在家目錄
chroot_list_file=/etc/vsftpd/chroot_list #限制在家目錄的使用者名單所在路徑,檔案格式為一行一使用者
注:通過搭配能實作以下幾種效果:
①當chroot_list_enable=YES,chroot_local_user=YES時,在/etc/vsftpd.chroot_list檔案中列出的使用者,可以切換到其他目錄;未在檔案中列出的使用者,不能切換到其他目錄。
②當chroot_list_enable=YES,chroot_local_user=NO時,在/etc/vsftpd.chroot_list檔案中列出的使用者,不能切換到其他目錄;未在檔案中列出的使用者,可以切換到其他目錄。
③當chroot_list_enable=NO,chroot_local_user=YES時,所有的使用者均不能切換到其他目錄。
④當chroot_list_enable=NO,chroot_local_user=NO時,所有的使用者均可以切換到其他目錄。
######### 日志設定 ###########
xferlog_enable=YES #打開日志記錄
xferlog_file=/var/log/vsftpd.log #日志存放位置
xferlog_std_format=YES #标準日志格式
######### 安全設定 ###########
idle_session_timeout=600 #使用者空閑逾時,機關秒
data_connection_timeout=120 #資料連接配接空閑逾時,機關秒
accept_timeout=60 # 将用戶端空閑1分鐘後斷開
connect_timeout=60 # 中斷1分鐘後重新連接配接
local_max_rate=50000 # 本地使用者傳輸速率,機關bite
max_clients=200 # FTP的最大連接配接數
max_per_ip=5 # 每個IP允許的連接配接數,0表示沒有限制,需要運作于獨立模式方可
######### 被動模式設定 ###########
pasv_enable=NO #是否使用PASV被動模式
pasv_min_port=5000 # 被動模式最小端口,0 表示任意。
pasv_max_port=6000 # 被動模式最大端口,0 表示任意。
pasv_promiscuous=NO #PASV模式的安全檢查,該檢查確定資料連接配接和控制連接配接是來自同一個IP位址,小心打開此選項。
######### 其他設定 ###########
ftpd_banner=Welcome to Ftp Server! #歡迎資訊
######### 虛拟使用者配置檔案###########
guest_enable=YES #允許虛拟使用者
guest_username=ftpadmin #指定虛拟使用者的宿主使用者
virtual_use_local_privs=NO #設定虛拟使用者的權限符合他們的宿主使用者
user_config_dir=/etc/vsftpd/vsftpd_user_conf #設定虛拟使用者個人Vsftp的配置檔案存放路徑。也就是說,這個被指定的目錄裡,将存放每個Vsftp虛拟使用者個性的配置檔案,一個需要注意的地方就是這些配置檔案名必須和虛拟使用者名相同
2、添加虛拟主機使用者
添加使用者abc,使用者目錄指定為/data/abc,且此使用者不能登陸系統.
#/usr/sbin/adduser -d /home -s /sbin/nologin ftpadmin
注-s /sbin/nologin是讓其不能登陸系統,-d 是指定使用者目錄為/data/abc
#passwd ftpadmin 設定密碼
#chown –R ftpadmin:ftpadmin /home
注:将使用者目錄及其子目錄的所有和所屬的組設定為home
三:相關的配置詳解
1.匿名使用者相關設定
當virtual_use_local_privs=YES時,虛拟使用者和本地使用者有相同的權限;
當virtual_use_local_privs=NO時,虛拟使用者和匿名使用者有相同的權限,預設是NO。
當virtual_use_local_privs=YES,write_enable=YES時,虛拟使用者具有寫權限(上傳、下載下傳、删除、重命名)。
當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,
anon_upload_enable=YES時,虛拟使用者不能浏覽目錄,隻能上傳檔案,無其他權限。
當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=NO時,虛拟使用者隻能下載下傳檔案,無其他權限。
anon_upload_enable=YES時,虛拟使用者隻能上傳和下載下傳檔案,無其他權限。
anon_mkdir_write_enable=YES時,虛拟使用者隻能下載下傳檔案和建立檔案夾,無其他權限。
anon_other_write_enable=YES時,虛拟使用者隻能下載下傳、删除和重命名檔案,無其他權限。
2.FTP伺服器的流量控制
如何對指定使用者進行流量限制呢?
#vi /etc/vsftpd/vsftpd.conf,添加一行:
user_config_dir=/etc/vsftpd/vsftpd_user_conf 虛拟賬戶的配置目錄,會覆寫vsftpd.conf的配置
#touch /etc/vsftpd/vsftpd_user_conf/test01 為test01這個使用者建立一個test01檔案
#vi /etc/vsftpd/vsftpd_user_conf/test01 添加以下内容
local_max_rate=100000
儲存重新開機服務即可.
四、啟動服務:
#chkconfig vsftpd on ;讓系統服務随着系統啟動而啟動
到此,整個小巧的ftp伺服器搭建成功。可以使用FileZilla FTP或FlashFXP等用戶端軟體登陸ftp server了。
本文轉自奔跑在路上部落格51CTO部落格,原文連結http://blog.51cto.com/qiangsh/1582286如需轉載請自行聯系原作者
qianghong000