1. 程式人生 > >配置vsftpd的遇到的坑及搭建虛擬賬戶

配置vsftpd的遇到的坑及搭建虛擬賬戶

vsftpd ftp

配置vsftpd的遇到的坑及搭建虛擬賬戶

vsftpd是Very secure FTP 的簡寫,是一款非常安全的FTP軟件。支持IPV6及SSL加密。

vsftpd特性:

  • 安全,高速,穩定

  • 基於IP的虛擬FTP服務器

  • 支持虛擬用戶

  • 支持PAM或者xinetd/tcp_wrappers的認證方式

  • 支持每個虛擬用戶具有獨立的配置

  • 支持帶寬限制

常見的報錯及解決方法

  • 開啟了anon_upload_enable=YES匿名用戶可以上傳文檔,為什麽總是還是提示553 Could not create file.不能上傳文檔?

解決方法:權限控制是基於vsftpd的配置文件和Linux的文件目錄權限兩方面的交集。匿名用戶默認是映射成ftp用戶來登陸的,所以並不具有對屬於root目錄的寫權限。所以在/var/ftp

新建一個上傳目錄mkdir upload;setfacl -m u:ftp:rwt upload;或者直接setfacl -m u:ftp:rwx pub一般不建議這樣。

  • 匿名用戶不可以刪除自己上傳的文檔怎麽辦:

在配置文檔裏添加:anon_other_write_enable=YES

  • 重啟或者重新加載時報錯:Job for vsftpd.service failed because the control process exited with error code. See "systemctl status vsftpd.service" and "journalctl -xe" for details.

配置文件中:listen_ipv6=YESlisten=YES這兩個不能同時開啟,只能開啟其中一個。詳情看配置文件上有解釋。

  • 開啟chroot_local_user=YES後使用本地用戶訪問,報錯:500 OOPS: vsftpd: refusing to run with writable root inside chroot()

這是由於vsftpd更新後加強了安全檢查。如果某用戶被限制在其家目錄下,那麽該用戶的家目錄不能再具有寫權限,否則會報錯。vsftpd-3.0(Centos7)才具有這種特性。vsftpd-2.2(Centos6)並不具有該屬性。 解決辦法:可以在主配置文件裏添加allow_writeable_chroot=YES(推薦)

或者直接修改該用戶的家目錄chmod a-w /home/USER(修改後會帶來相關的權限限制)

  • 詳細說明chroot的相關選項:

chroot_local_user=YES|NO

chroot_list_enable=YES|NO

chroot_list_file=/etc/vsftpd/chroot_list

該選項的作用是禁錮ftp的本地用戶於家目錄之中。 但是限制和不限制哪些用戶是相對於chroot\_local_user是否開啟而言的。chroot_local_user和chroot_list_enable總是背道而馳。

方式一: chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

該方式表明/etc/vsftpd/chroot_list列表裏的所有賬號都被不會被限制在其家目錄裏面。列表以外的用戶都被限制。

方式二: chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

該方式表明/etc/vsftpd/chroot_list列表裏的所有用戶都被限制在其家目錄裏面,但是該列表以外的用戶都不被限制在它們的家目錄裏面。詳細理解自己試驗。

配置虛擬賬號的方法(Centos7):

使用文件來儲存虛擬賬戶:

  1. 安裝db4-utils工具來創建數據庫文件

    # yum -y install libdb-utils
    
    #奇數行為賬號,偶數行為上面一個賬號的密碼
    # vim /etc/vsftpd/virtual_user
    tom
    12345
    jerry
    67890
    # db_load -T -t hash -f /etc/vsftpd/virtual_user /etc/vsftpd/virtual_user.db
  2. 創建pam文件,設置基於虛擬用戶驗證

    # vim /etc/pam.d/vsftpd.pam 
    auth required /lib64/security/pam_userdb.so  db=/etc/vsftpd/virtual_user
    account required /lib64/security/pam_userdb.so  db=/etc/vsftpd/virtual_user
  3. 設置虛擬賬戶及共享目錄

    # useradd -s /sbin/nologin -d /home/ftp virtual
  4. 修改主配置文件(只需添加或修改列出的內容其他的不用修改)

    # vim /etc/vsftpd/vsftpd.conf
    anonymous_enable=NO
    pam_service_name=vsftpd.pam
    userlist_enable=YES
    tcp_wrappers=YES
    guest_enable=YES
    guest_username=virtual
    allow_writeable_chroot=YES
    ser_config_dir=/etc/vsftpd/virtual_user_conf
    user_sub_token=$USER
  5. 為每個賬號設置單獨的路徑和權限:

    # mkdir /etc/vsftpd/virtual_user_conf
    # touch /etc/vsftpd/virtual_user_conf/{tom,jerry}
    
    #設置tom只能上傳文檔
    # vim /etc/vsftpd/virtual_user_conf/tom 
    local_root=/home/ftp/$USER
    anon_mkdir_write_enable=NO
    anon_other_write_enable=NO
    anon_upload_enable=YES
    
    
    #設置Jerry可以上傳,下載和刪除文件
    # vim /etc/vsftpd/virtual_user_conf/jerry 
    local_root=/home/ftp/$USER
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    anon_upload_enable=YES
    
    #修改權限
    # mkdir /home/ftp/{tom,jerry}
    # chown virtual:virtual tom/
    # chown virtual:virtual jerry/
  6. 重啟服務並驗證

    # systemctl restart vsftpd

經過驗證確實可行。由於篇幅有限我就不把實驗驗證結果貼出來了。本過程還可以做限制得更嚴格,比如:帶寬,並發量等,自行添加。這裏可以使用一款開源的客戶端FTP軟件FileZilla可以點擊下載。


本文出自 “dianel簡單不簡單” 博客,請務必保留此出處http://dianel.blog.51cto.com/12170393/1929212

配置vsftpd的遇到的坑及搭建虛擬賬戶