ftp完全版本配置文件

1.安裝vsftpd

安裝依賴包:
  1. yum -y install pam pam-devel db4 de4-devel db4-uitls db4-tcl
新建vsftpd系統用戶:
  1. #建立Vsftpd服務的宿主用戶
  2. useradd vsftpd -M -s /sbin/nologin
  3. #建立Vsftpd虛擬宿主用戶
  4. useradd ftpvload -M -s /sbin/nologin
安裝vsftpd
  1. yum -y install vsftpd

2.配置vsftpd

  1. cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back

2.1 修改vsftpd.conf配置文件

主要是下面的一些配置:
  1. anonymous_enable=NO
  2. #設定不允許匿名訪問
  3. local_enable=YES
  4. #設定本地用戶可以訪問。注意:主要是爲虛擬宿主用戶,如果該項目設定爲NO那麼所有虛擬用戶將無法訪問。
  5. write_enable=YES
  6. #設定可以進行寫操作。
  7. local_umask=022
  8. #設定上傳後文件的權限掩碼。
  9. anon_upload_enable=NO
  10. #禁止匿名用戶上傳。
  11. anon_mkdir_write_enable=NO
  12. #禁止匿名用戶建立目錄。
  13. dirmessage_enable=YES
  14. #設定開啓目錄標語功能。
  15. xferlog_enable=YES
  16. #設定開啓日誌記錄功能。
  17. connect_from_port_20=YES
  18. #設定端口20進行數據連接。
  19. chown_uploads=NO
  20. #設定禁止上傳文件更改宿主。
  21. xferlog_file=/var/log/vsftpd.log
  22. #設定Vsftpd的服務日誌保存路徑。注意,該文件默認不存在。必須要手動touch出來,並且由於這裏更改了Vsftpd的服務宿主用戶爲手動建立的Vsftpd。必須注意給與該用戶對日誌的寫入權限,否則服務將啓動失敗。
  23. xferlog_std_format=YES
  24. #設定日誌使用標準的記錄格式。
  25. async_abor_enable=YES
  26. #設定支持異步傳輸功能。
  27. ascii_upload_enable=YES
  28. ascii_download_enable=YES
  29. #設定支持ASCII模式的上傳和下載功能。
  30. ftpd_banner=This Vsftp server supports virtual users ^_^
  31. #設定Vsftpd的登陸標語。
  32. chroot_list_enable=NO
  33. #禁止用戶登出自己的FTP主目錄。
  34. ls_recurse_enable=NO
  35. #禁止用戶登陸FTP後使用"ls -R"的命令。該命令會對服務器性能造成巨大開銷。如果該項被允許,那麼當多用戶同時使用該命令時將會對該服務器造成威脅。
  36. listen=YES
  37. #設定該Vsftpd服務工作在StandAlone模式下。
  38. pam_service_name=vsftpd #設定PAM服務下Vsftpd的驗證配置文件名。因此,PAM驗證將參考/etc/pam.d/下的vsftpd文件配置。
  39. userlist_enable=YES
  40. #設定userlist_file中的用戶將不得使用FTP。
  41. tcp_wrappers=YES
  42. #設定支持TCP Wrappers
  43. #以下這些是關於Vsftpd虛擬用戶支持的重要配置項目。默認Vsftpd.conf中不包含這些設定項目,需要自己手動添加配置
  44. guest_enable=YES
  45. #設定啓用虛擬用戶功能。
  46. guest_username=ftpvload
  47. #指定虛擬用戶的宿主用戶。
  48. virtual_use_local_privs=YES
  49. #設定虛擬用戶的權限符合他們的宿主用戶。
  50. user_config_dir=/etc/vsftpd/vconf
  51. #設定虛擬用戶個人Vsftp的配置文件存放路徑。也就是說,這個被指定的目錄裏,將存放每個Vsftp虛擬用戶個性的配置文件,一個需要注意的地方就是這些配置文件名必須和虛擬用戶名相同。
建立Vsftpd的日誌文件,並更該屬主爲Vsftpd的服務宿主用戶:
  1. touch /var/log/vsftpd.log
  2. chown vsftpd.vsftpd /var/log/vsftpd.log

2.2 虛擬用戶配置

創建虛擬用戶配置文件存放路徑
  1. mkdir /etc/vsftpd/vconf/ -pv
製作虛擬用戶數據庫文件
  1. touch /etc/vsftpd/virtusers
新建一個測試用虛擬用戶
  1. vim /etc/vsftpd/virtusers
編輯這個虛擬用戶名單文件,在其中加入用戶的用戶名和口令信息。格式很簡單:“奇數行用戶名,偶數行口令”。
virtusers文件格式如下:
  1. test #用戶名
  2. test1234 #用戶密碼
生成虛擬用戶數據文件:
  1. db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
需要特別注意的是,以後再要添加虛擬用戶的時候,只需要按照“一行用戶名,一行口令”的格式將新用戶名和口令添加進虛擬用戶名單文件。但是光這樣做還不夠,這樣是不會生效的!還要再執行一遍“ db_load -T -t hash -f 虛擬用戶名單文件 虛擬用戶數據庫文件.db ”的命令使其生效纔可以!

2.3 設置認證文件PAM

在編輯前做好備份:
  1. cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup
編輯Vsftpd的PAM驗證配置文件,把原來的配置文件全部註釋掉(不註釋掉虛擬用戶會登錄不上),添加如下行
  1. #vim /etc/pam.d/vsftpd
  2. auth    sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers
  3. account sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers
#以上兩條是手動添加的,內容是對虛擬用戶的安全和帳戶權限進行驗證。
這裏的auth是指對用戶的用戶名口令進行驗證。
這裏的accout是指對用戶的帳戶有哪些權限哪些限制進行驗證。
其後的sufficient表示充分條件,也就是說,一旦在這裏通過了驗證,那麼也就不用經過下面剩下的驗證步驟了。相反,如果沒有通過的話,也不會被系統立即擋之門外,因爲sufficient的失敗不決定整個驗證的失敗,意味着用戶還必須將經歷剩下來的驗證審覈。
再後面的/lib/security/pam_userdb.so表示該條審覈將調用pam_userdb.so這個庫函數進行。
最後的db=/etc/vsftpd/virtusers則指定了驗證庫函數將到這個指定的數據庫中調用數據進行驗證。

2.4 虛擬用戶配置

規劃好虛擬用戶的主路徑:
  1. mkdir /var/ftp/virtual
建立測試用戶的FTP用戶目錄:
  1. mkdir /var/ftp/virtual/test1
更改虛擬用戶的主目錄的屬主爲虛擬宿主用戶:
  1. chown -R ftpvload.ftpvload /var/ftp/virtual/
建立虛擬用戶配置文件模版:
  1. vi /etc/vsftpd/vconf/vconf.tmp
vconf.tmp內容如下:
  1. local_root=/var/ftp/virtual/test1
  2. #指定虛擬用戶的具體主路徑
  3. anonymous_enable=NO
  4. #設定不允許匿名用戶訪問
  5. write_enable=YES
  6. #設定允許寫操作
  7. local_umask=022
  8. #設定上傳文件權限掩碼
  9. anon_upload_enable=NO
  10. #設定不允許匿名用戶上傳
  11. anon_mkdir_write_enable=NO
  12. #設定不允許匿名用戶建立目錄
  13. idle_session_timeout=600
  14. #設定空閒連接超時時間
  15. data_connection_timeout=120
  16. #設定單次連續傳輸最大時間
  17. max_clients=10
  18. #設定併發客戶端訪問個數
  19. max_per_ip=5
  20. #設定單個客戶端的最大線程數,這個配置主要來照顧Flashget、迅雷等多線程下載軟件
  21. local_max_rate=50000
  22. #設定該用戶的最大傳輸速率,單位b/s
測試用戶複製配置模板
  1. cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/test
  1. vim /etc/vsftpd/vconf/test

3.測試配置

使用ftp連接之後,測試情況如下

4.自動腳本

4.1 自動安裝配置

  1. #!/bin/bash
  2. #date:2017-05-25
  3. #version:0.0.1
  4. #開始安裝vsftpd
  5. echo ">>> 1. Start install Vsftpd ......"
  6. yum -y install pam pam-devel db4 de4-devel db4-tcl vsftpd
  7. mkdir /var/ftp/virtual
  8. useradd vsftpd -M -s /sbin/nologin
  9. useradd ftpvload -d /var/ftp/virtual/ -s /sbin/nologin
  10. sleep 3
  11. #開始配置vsftpd
  12. echo ">>> 2. Start config Vsftpd ......"
  13. cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back
  14. sed -i '/^[^#]/s/^/#/g' vsftpd.conf
  15. echo "
  16. anonymous_enable=NO
  17. local_enable=YES
  18. write_enable=YES
  19. local_umask=022
  20. anon_upload_enable=NO
  21. anon_mkdir_write_enable=NO
  22. dirmessage_enable=YES
  23. xferlog_enable=YES
  24. connect_from_port_20=YES
  25. chown_uploads=NO
  26. xferlog_file=/var/log/vsftpd.log
  27. xferlog_std_format=YES
  28. async_abor_enable=YES
  29. ascii_upload_enable=YES
  30. ascii_download_enable=YES
  31. ftpd_banner=Welcome to FTP Server
  32. chroot_local_user=YES
  33. ls_recurse_enable=NO
  34. listen=YES
  35. hide_ids=YES
  36. pam_service_name=vsftpd
  37. userlist_enable=YES
  38. tcp_wrappers=YES
  39. guest_enable=YES
  40. guest_username=ftpvload
  41. virtual_use_local_privs=YES
  42. user_config_dir=/etc/vsftpd/vconf
  43. " >> /etc/vsftpd/vsftpd.conf
  44. cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup
  45. sed -i s/^/#/g /etc/pam.d/vsftpd
  46. echo "auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
  47. account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
  48. " >> /etc/pam.d/vsftpd
  49. sleep 3
  50. #開始配置其它
  51. echo ">>> 3. Start config other ......"
  52. touch /var/log/vsftpd.log
  53. chown vsftpd.vsftpd /var/log/vsftpd.log
  54. mkdir /etc/vsftpd/vconf/ -pv
  55. sleep 3
  56. #配置虛擬用戶
  57. echo ">>> 4. Start config vitual user"
  58. echo -e "test\ntest1234" >> /etc/vsftpd/virtusers
  59. db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
  60. mkdir /var/ftp/virtual/test
  61. echo "local_root=/var/ftp/virtual/username
  62. #指定虛擬用戶的具體主路徑
  63. anonymous_enable=NO
  64. #設定不允許匿名用戶訪問
  65. write_enable=YES
  66. #設定允許寫操作
  67. local_umask=022
  68. #設定上傳文件權限掩碼
  69. anon_upload_enable=NO
  70. #設定不允許匿名用戶上傳
  71. anon_mkdir_write_enable=NO
  72. #設定不允許匿名用戶建立目錄
  73. idle_session_timeout=600
  74. #設定空閒連接超時時間
  75. data_connection_timeout=120
  76. #設定單次連續傳輸最大時間
  77. max_clients=10
  78. #設定併發客戶端訪問個數
  79. max_per_ip=5
  80. #設定單個客戶端的最大線程數,這個配置主要來照顧Flashget、迅雷等多線程下載軟件
  81. local_max_rate=50000
  82. #設定該用戶的最大傳輸速率,單位b/s
  83. " >> /etc/vsftpd/vconf/vconf.tmp
  84. cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/test
  85. sed -i s/username/test/g /etc/vsftpd/vconf/test
  86. echo "Alll OVER! "

4.2 新增用戶

  1. #!/bin/bash
  2. #date:2017-05-25
  3. if read -t 5 -p "Please enter you name: " username
  4. then
  5. if [ -f /etc/vsftpd/vconf/$username ] #判斷用戶是否存在
  6. then
  7. echo "The $username is exists, please input another name."
  8. else
  9. read -s -p "Please enter your password: " passwd
  10. echo -e "$username\n$passwd" >> /etc/vsftpd/virtusers
  11. db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
  12. mkdir -pv /var/ftp/virtual/$username
  13. cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/$username
  14. sed -i s/username/$username/g /etc/vsftpd/vconf/$username
  15. echo "The config is over."
  16. fi
  17. else
  18. echo -e "\nThe 5s has passed, you are to slow! "
  19. fi
4.3 刪除用戶

版權聲明:歡迎轉載,但是要註明出處! https://blog.csdn.net/zhangpfly/article/details/73160346
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章