檔案共享服務:
ftp:應用層,c/s架構,檔案共享;
nfs,cifs:檔案系統接口,網絡檔案系統;
nfs:(network file system)是unix和linux系統上常見的核心的網絡檔案共享服務;
cifs:(common internet file system),是windows上常見的網絡檔案共享服務;
samba:是在linux之上實作cifs協定來解決跨平台的檔案共享服務;
ftp:file transfer protocol
應用層協定:tcp,21/tcp
c/s:
client:用戶端
server:伺服器
資料:
指令連接配接:檔案管理類指令,始終線上的連接配接;
資料連接配接:資料傳輸,按需建立及關閉的連接配接
資料傳輸格式:
文本傳輸;
二進制傳輸;
主動:由伺服器建立連接配接
指令:client:5000 server:21
資料:server:20/tcp client: 5000+1
被動:由用戶端建立連接配接
指令:client:50000 --> server: 21
資料:client:50000+1 --> server: 随機端口
c/s:服務及工具
server:
wu-ftpd
proftpd
pureftpd
vsftpd:very secure
servu
client:
ftp
lftp,lftpget
wget,curl
filezilla
gftp(linux gui)
示範:用一台主機ftp連接配接另一台vsftpd的伺服器主機;
安裝vsftpd;
#yum install vsftpd –y
開啟vsftpd服務并檢視端口是否開啟;
遠端連接配接測試;
發現目前目錄為目前使用者的家目錄;
centos6.6:vsftpd
使用者認證配置檔案:/etc/pam.d/vsftpd
服務腳本:/etc/tc.d/init.d/vsftpd
配置檔案目錄:/etc/vsftpd
主配置檔案:vsftpd.conf
匿名使用者(映射為ftp使用者)共享資源位置:/var/ftp
系統使用者通過ftp通路的資源的位置:使用者自己的家目錄
虛拟使用者通過ftp通路的資源的位置:給虛拟使用者指定的映射稱為的系統使用者的家目錄;
匿名使用者的配置:
anonymous_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
示範:
1) 用匿名使用者遠端登入ftp伺服器,發現沒有上傳檔案權限和建立目錄權限;
2) 修改ftp伺服器配置檔案如下;
3) 重新開機服務;
#service vsftpd restart
4) 重新遠端ftp伺服器,發現建立目錄,上傳檔案等還是失敗;
5) 因為ftp使用者對/var/ftp沒有寫權限,為了穩妥,我們在ftp伺服器上/var/ftp目錄下我們建立了pub,upload目錄,我們賦予子目錄權限;
6) 重新測試,可以上傳檔案了;
也可以删除檔案了;
7) 下載下傳檔案,發現錯誤提示failed to open file;
8) 編輯配置檔案,添加以下項;
9) 重新開機服務後,重新測試,重新上傳檔案,重新下載下傳,會成功下載下傳;
系統使用者的配置:
local_enable=yes
write_enable=yes
local_unmask=022
禁锢所有的ftp本地使用者于其家目錄中:
chroot_local_user=yes
禁锢檔案中指定的ftp本地使用者于其家目錄中:
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd/chroot_list
示例:
1) 編輯配置檔案,啟用如下選項;
2) 編輯chroot_list_file;
3) 測試,顯示已被鎖定;
4) 用centos使用者登入,沒有被鎖定在家目錄;
日志:
xferlog_enable=yes #是否啟用傳輸日志;
xferlog_std_format=yes
xferlog_file=/var/log/xferlog #日志檔案,需要手動建立
改變上傳檔案的屬主:
chown_uploads=yes
chown_username=whoever
vsftpd使用pam完成使用者認證,其用到的pam配置檔案:/etc/pam.d/vsftpd
pam_servcie_name=vsftpd
1) vsftpd使用pam完成認證;使用配置檔案/etc/pam.d/vsftpd
可以看到使用者控制的檔案為/etc/vsftpd/ftpusers;
2) 編輯配置檔案/etc/vsftpd/vsftpd.conf,啟用使用者認證控制,其中userlist_deny=yes代表黑名單,no的話代表白名單;
3) 編輯/etc/vsftpd/ftpusers配置檔案;
4) 重載服務,測試,centos使用者登入不上ftp伺服器;
是否啟用控制使用者登入的清單檔案
userlist_enable=yes
userlist_deny=yes|no #yes為黑名單,no為白名單;
預設檔案為/etc/vsftpd/user_list
1) 編輯/etc/vsftpd/user_list檔案;
2) 測試;
連接配接限制:
max_clients:最大并發連接配接數;
max_per_ip:每個ip可同時發起的并發請求數;
傳輸速率:
anon_max_rate:匿名使用者的最大傳輸速率,機關是“位元組/秒”;
local_max_rate:本地使用者的…
虛拟使用者:
所有的虛拟使用者會被統一映射為一個指定的系統賬号,通路的共享位置即為此系統賬号的家目錄;
各虛拟使用者可被賦予不同的通路權限:
通過匿名使用者的權限控制參數進行指定;
各虛拟使用者賬号的存儲方式:
1) 存于檔案中:編輯檔案
奇數行為使用者名;
偶數行為密碼;
此檔案需要被編碼為hash格式;
2) 存于關系型資料庫中的表中:
即時查詢資料庫完成使用者認證;
mysql庫,pam要依賴與pam_mysql
#yum –y insatall pam_mysql
具體步驟:
a. 在資料庫中建立虛拟使用者賬号;
添加表内容;
b. 建立pam認證所需檔案
c. 建立虛拟使用者映射的本地使用者及對應的目錄;
d. 修改vsftpd的配置檔案,使其使用mysql認證;
編輯/etc/vsftpd/vsftpd.conf檔案,首先確定已經啟用如下選項;
anon_upload_enable=no
anon_mkdir_write_enable=no
并添加以下選項:
guest_enable=yes #啟用虛拟使用者;
guest_username=vuser #指定映射到哪個本地使用者
pam_service_name=vsftpd.mysql
e. 配置虛拟使用者具有不同的通路權限;
vsftpd可以在配置檔案中每一個使用者提供單獨的配置檔案以及定義設定服務通路權限,每個虛拟使用者的配置檔案名同虛拟使用者的使用者名。配置檔案目錄可以是任意未使用的目錄,隻需要在主配置檔案中指明路徑即可;
在主配置檔案中定義目錄;
建立相關目錄及檔案:
note:虛拟使用者對vsftpd服務的通路權限是通過匿名使用者的相關指令進行的。
f. 啟動服務并測試;
note:如果是二進制安裝的mysql,可能會出現登入不了ftp伺服器的情況,因為其socket預設路徑不是/var/lib/mysql/msyql.socket,此時需要編輯/etc/my.cnf檔案修改socket路徑;