VSFTPD and CHROOT

如果你用 VSFTPD 然後只想要使用者在自己的家目錄裡玩, 然後管理者登入可以看到全部使用者的 folder.
你需要

  1. 將 /etc/vsftpd.conf 裡的這些選項開啟
    chroot_local_user=YES # 對 /etc/passwd 表裡的使用者, 開啟change root功能, 將該user家目錄重設為 root
    chroot_list_enable=YES # 啟用 chroot_list, 在 list 內的使用者可不受 change root 限制
    chroot_list_file=/etc/vsftpd.chroot_list # 名單內帳號不受限制
    
  2. 將 VSFTPD 更換成支援 allow_writable_chroot=YES 的版本

    sudo add-apt-repository ppa:thefrontiergroup/vsftpd
    sudo apt-get update
    sudo apt-get install vsftpd
    
  3. /etc/vsftpd.conf 加入 allow_writable_chroot=YES

    echo allow_writeable_chroot=YES >> /etc/vsftpd.conf
    
  4. 重啟 VSFTPD

  5. 配合 shell script 即可建立 ftp user 並限制在該 user home directory 裡 ( by Vincent )

    add_ftp_user.sh
    #!/bin/bash
    if [ "$#" -eq 0 ]; then
    echo "Usage: add_ftp_user.sh USERNAME"
    exit 1
    fi
    username=$1
    sudo useradd -s /bin/bash -m -d /home/ae_staff/${username} ${username}
    sudo chgrp ae_ftp /home/ae_staff/${username}
    sudo chmod 770    /home/ae_staff/${username}
    echo -n "Setup user password. "
    sudo passwd ${username}
    echo "Created ftp user ${username} successful."
    
  6. ae_staff 是某個管理所有 ftp user 的帳號, ae_ftp 是繼承 ae_staff 的群組, 這樣方便管理者處理user上傳的檔案

Comments

comments powered by Disqus