ftp是典型的c/s結構的網絡層協定;它使用tcp 20 和 21 端口 ;傳輸模式有兩種,
主動模式:服務端主動發起 資料 連接配接;首先用戶端向服務端的21端口建立控住連結,當需要資料傳輸的時候 用戶端通過port的指令告訴服務端自己打開的端口,于是服務端從20口向用戶端法請求并建立連接配接。
被動模式:服務端被動等待 資料 連結;首先用戶端向服務端的21端口建立控制連結 當需要傳輸資料的時候 服務端以pasv 指令通知用戶端 自己打開的端口(随機打開)于是用戶端向服務端的那個端口(非20)端口建立連接配接;
如果是客戶機的防火牆禁止主動模式 一般是轉為被動模式
傳輸資料的方式分為兩種:
文本模式:ascii模式 傳輸時使用ascii字元 一般适合純文字的傳輸;
二進制模式:binary模式 适合傳輸程式,圖檔等;
我用的是vsftpd這個軟體
系統盤上就有包 要不直接yum安裝 預設安裝位置/etc/vsftpd 裡面包括:使用者控制檔案(ftpusers、user_list)和 主配置檔案;
ftpusers 檔案:這個檔案中的使用者将禁止登入到ftp伺服器;不管是不是在user_list中出現,如:root就在這裡
user_list檔案:看配置檔案中 userlist_enable=yes 則允許 userlist_deny=yes就是拒絕 看英文意思就知道了。
本地使用者的vsftpd服務:
匿名ftp:
匿名使用者對應為ftp 或 anonymous 宿主目錄是/var/ftp 該目錄是匿名使用者通路vsftpd的根目錄 (anon_root更改)首先設定相應的權限 把pub目錄的屬組設定成 ftp
2:修改主配置檔案
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=yes //允許匿名使用者通路
local_enable=no //不啟用本地使用者
write_enable=yes // 允許寫的權限
anon_umask=022 //上傳檔案時的掩碼 這裡是用的反碼
anon_upload_enable=yes //允許匿名使用者上傳
anon_mkdir_write_enable=yes //允許匿名使用者建目錄
userlist_enable=no //沒啟用本地使用者 将使用者清單禁用
anon_other_write_enable=yes //允許匿名使用者在上傳目錄中做删除,重命名等操作;慎用;
重新開機就好了!!!
【注:不要去改/var/ftp的屬主 用可能會報錯;】
本地使用者ftp:
使用系統使用者做驗證 預設登入位于自己的宿主目錄 且有讀寫的權限 且允許切換到其他的目錄 可以使用chroot_local_user 固定在宿主目錄 local_root設定根目錄;
1:先建立測試使用者 設定密碼
2:vi /etc/vsftpd/vsftpd.cong
anonymous_enable=no //禁用匿名通路
local_enable=yes //允許本地使用者通路
write_enable=yes //開放寫的權限
local_umask=022 //上傳建立檔案的預設權限
chroot_local_user=yes //把使用者禁锢在宿主目錄
max_client=20 //并發客戶連接配接數
max_per_ip=2 //同一ip同時連接配接數
local_max_rate=102400 //本地使用者上傳下載下傳的速度 100kb/s
pasv_enable=yes //允許被動模式并設定端口範圍
pasv_min_port=24500
pasv_max_port=24600
好了 重新開機服務 ok!!!
【如用wget測試 格式:wget ftp://使用者:密碼@伺服器ip/檔案名】
建立基于虛拟使用者的vsftpd服務:
1:建立虛拟使用者的使用者名/密碼資料庫
vsftpd使用berkeley db 格式的資料檔案 該資料檔案需要用db_load指令工具 CD光牒中有db4-utils-xxxxxxx.rpm包
先建立文本格式的檔案 :vi /etc/vsftpd/vusers.list
chunchun
123456
xiaochun
123456 //格式是 使用者名密碼各一行
用db_load工具将清單檔案轉化成db檔案
db_load -t -t hash -f vusers.list vuser.db //-t 表示允許轉化 -f 檔案 -t hash 讀取資料的方法 最後把權限設成600
2:設定虛拟使用者對應的系統使用者 可以不設定密碼
useradd -d /var/ftproot -s /sbin/nologin test
把/var/ftproot 權限設定成755
3:建立pam認證檔案
(pam用于程式提供使用者認證 vsftpd使用的是 /etc/pam.d/vsftpd)
vi /etc/pam.d/vsftpd.vu
#%pam-1.0
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
{vusers 是省略.db的資料庫檔案}
4:改配置檔案:vi /etc/vsftpd/vsftpd.conf
anonymous_enable=no
local_enable=yes
anon_umask=022
write_enable=yes
guest_enable_yes
guest_username=test
dirmessage_enable=yes
pam_service_name=vsftpd.vu //修改pam檔案位置
虛拟使用者被當作是匿名使用者 是以是用anon配置項
這是就ok!!!!了
【補充】
可以為不同使用者單獨設定配置檔案 修改主配置檔案 加
user_config_dir=/etc/vsftpd/vusers_dir
建立檔案
mkdir /etc/vsftpd/vusers_dir/ 進入目錄
vi 使用者名(虛拟使用者)
anon_upload_enable=yes
anon_mkdir_write_enable=yes
注意:/etc/vsftpd/ftpusers 中加入虛拟使用者并不能禁用相應的系統帳号