VSFTPD and CHROOT
如果你用 VSFTPD 然後只想要使用者在自己的家目錄裡玩, 然後管理者登入可以看到全部使用者的 folder.
你需要
- 將 /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 # 名單內帳號不受限制
-
將 VSFTPD 更換成支援 allow_writable_chroot=YES 的版本
sudo add-apt-repository ppa:thefrontiergroup/vsftpd sudo apt-get update sudo apt-get install vsftpd
-
/etc/vsftpd.conf 加入 allow_writable_chroot=YES
echo allow_writeable_chroot=YES >> /etc/vsftpd.conf
重啟 VSFTPD
-
配合 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."
ae_staff 是某個管理所有 ftp user 的帳號, ae_ftp 是繼承 ae_staff 的群組, 這樣方便管理者處理user上傳的檔案