Linux自學筆記——文件共享服務之ftp

文件共享服務:
 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)

    flashfxp
    cuteftp
響應碼:
    1xx:信息;
    2xx:成功類的狀態碼;
    3xx:提示需進一步提供補充類信息的狀態碼
    4xx:客戶端錯誤;
    5xx:服務端錯誤;
用戶認證:
    虛擬用戶:僅用於訪問某特定服務中的資源
        nsswitch:network server switch,名稱解析框架
            配置文件:/etc/nsswitch.conf
            模塊:/lib64/libnss*,/usr/lib64/libnss*
        Pam:pluggable authentication module,用戶認證框架

演示:用一臺主機ftp連接另一臺vsftpd的服務器主機;

  1. 安裝vsftpd;
    #yum install vsftpd –y
  2. 開啓vsftpd服務並查看端口是否開啓;
    Linux自學筆記——文件共享服務之ftp
  3. 遠程連接測試;
    Linux自學筆記——文件共享服務之ftp
    發現當前目錄爲當前用戶的家目錄;
    Linux自學筆記——文件共享服務之ftp
    Centos6.6:vsftpd
    用戶認證配置文件:/etc/pam.d/vsftpd
    服務腳本:/etc/tc.d/init.d/vsftpd
    配置文件目錄:/etc/vsftpd
    主配置文件:vsftpd.conf
    匿名用戶(映射爲ftp用戶)共享資源位置:/var/ftp
    系統用戶通過ftp訪問的資源的位置:用戶自己的家目錄
    虛擬用戶通過ftp訪問的資源的位置:給虛擬用戶指定的映射稱爲的系統用戶的家目錄;
  4. 匿名用戶的配置:
    anonymous_enable=YES
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    Linux自學筆記——文件共享服務之ftp
    演示:
    1) 用匿名用戶遠程登錄ftp服務器,發現沒有上傳文件權限和創建目錄權限;
    Linux自學筆記——文件共享服務之ftp
    2) 修改ftp服務器配置文件如下;
    Linux自學筆記——文件共享服務之ftp
    3) 重啓服務;
    #service vsftpd restart
    4) 重新遠程ftp服務器,發現創建目錄,上傳文件等還是失敗;
    Linux自學筆記——文件共享服務之ftp
    5) 因爲ftp用戶對/var/ftp沒有寫權限,爲了穩妥,我們在ftp服務器上/var/ftp目錄下我們創建了pub,upload目錄,我們賦予子目錄權限;
    Linux自學筆記——文件共享服務之ftp
    6) 重新測試,可以上傳文件了;
    Linux自學筆記——文件共享服務之ftp
    也可以刪除文件了;
    Linux自學筆記——文件共享服務之ftp
    7) 下載文件,發現錯誤提示failed to open file;
    Linux自學筆記——文件共享服務之ftp
    8) 編輯配置文件,添加以下項;
    Linux自學筆記——文件共享服務之ftp
    9) 重啓服務後,重新測試,重新上傳文件,重新下載,會成功下載;
    Linux自學筆記——文件共享服務之ftp
  5. 系統用戶的配置:
    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) 編輯配置文件,啓用如下選項;
    Linux自學筆記——文件共享服務之ftp
    2) 編輯chroot_list_file;
    Linux自學筆記——文件共享服務之ftp
    3) 測試,顯示已被鎖定;
    Linux自學筆記——文件共享服務之ftp
    4) 用centos用戶登錄,沒有被鎖定在家目錄;
    Linux自學筆記——文件共享服務之ftp
  6. 日誌:
    xferlog_enable=YES #是否啓用傳輸日誌;
    xferlog_std_format=YES
    xferlog_file=/var/log/xferlog #日誌文件,需要手動創建
  7. 改變上傳文件的屬主:
    chown_uploads=YES
    chown_username=whoever
  8. vsftpd使用pam完成用戶認證,其用到的pam配置文件:/etc/pam.d/vsftpd
    pam_servcie_name=vsftpd
    演示:
    1) vsftpd使用pam完成認證;使用配置文件/etc/pam.d/vsftpd
    Linux自學筆記——文件共享服務之ftp
    可以看到用戶控制的文件爲/etc/vsftpd/ftpusers;
    2) 編輯配置文件/etc/vsftpd/vsftpd.conf,啓用用戶認證控制,其中userlist_deny=YES代表黑名單,NO的話代表白名單;
    Linux自學筆記——文件共享服務之ftp
    3) 編輯/etc/vsftpd/ftpusers配置文件;
    Linux自學筆記——文件共享服務之ftp
    4) 重載服務,測試,centos用戶登錄不上ftp服務器;
    Linux自學筆記——文件共享服務之ftp
  9. 是否啓用控制用戶登錄的列表文件
    userlist_enable=YES
    userlist_deny=YES|NO #YES爲黑名單,NO爲白名單;
    默認文件爲/etc/vsftpd/user_list
    演示:
    1) 編輯/etc/vsftpd/user_list文件;
    Linux自學筆記——文件共享服務之ftp
    2) 測試;
    Linux自學筆記——文件共享服務之ftp
  10. 連接限制:
    max_clients:最大併發連接數;
    max_per_ip:每個ip可同時發起的併發請求數;
  11. 傳輸速率:
    anon_max_rate:匿名用戶的最大傳輸速率,單位是“字節/秒”;
    local_max_rate:本地用戶的…
  12. 虛擬用戶:
    所有的虛擬用戶會被統一映射爲一個指定的系統賬號,訪問的共享位置即爲此係統賬號的家目錄;
    各虛擬用戶可被賦予不同的訪問權限:
    通過匿名用戶的權限控制參數進行指定;
    各虛擬用戶賬號的存儲方式:
    1) 存於文件中:編輯文件
    奇數行爲用戶名;
    偶數行爲密碼;
    此文件需要被編碼爲hash格式;
    2) 存於關係型數據庫中的表中:
    即時查詢數據庫完成用戶認證;
    Mysql庫,pam要依賴與pam_mysql
    #yum –y insatall pam_mysql
    具體步驟:
    a. 在數據庫中創建虛擬用戶賬號;
    Linux自學筆記——文件共享服務之ftp
    添加表內容;
    Linux自學筆記——文件共享服務之ftp
    b. 建立pam認證所需文件
    Linux自學筆記——文件共享服務之ftp
    c. 建立虛擬用戶映射的本地用戶及對應的目錄;
    Linux自學筆記——文件共享服務之ftp
    d. 修改vsftpd的配置文件,使其使用mysql認證;
    編輯/etc/vsftpd/vsftpd.conf文件,首先確保已經啓用如下選項;
    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=vsftpd.mysql
    Linux自學筆記——文件共享服務之ftp
    e. 配置虛擬用戶具有不同的訪問權限;
    Vsftpd可以在配置文件中每一個用戶提供單獨的配置文件以及定義設置服務訪問權限,每個虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任意未使用的目錄,只需要在主配置文件中指明路徑即可;
    在主配置文件中定義目錄;
    Linux自學筆記——文件共享服務之ftp
    創建相關目錄及文件:
    Linux自學筆記——文件共享服務之ftp
    Note:虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關指令進行的。
    f. 啓動服務並測試;
    Linux自學筆記——文件共享服務之ftp
    Note:如果是二進制安裝的mysql,可能會出現登錄不了ftp服務器的情況,因爲其socket默認路徑不是/var/lib/mysql/msyql.socket,此時需要編輯/etc/my.cnf文件修改socket路徑;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章