需求是要依使用者不同然後進入不同的目錄然後也不能回到上層目錄
新增一個沒有登入功能的使用者
sudo useradd -M -s /usr/sbin/nologin XXX
賦予新使用者密碼
sudo passwd XXX
在 home 建立目錄
sudo mkdir /home/XXX
賦予資料夾該使用者權限
sudo chown XXX:XXX -R /home/XXX/
修改 vsftpd conf 內容
sudo vi /etc/vsftpd.conf
# 支援檔案上傳
write_enable=YES
# 使用者上傳資料預設權限,預設是 022 計算方式就是以 777 開始然後減掉 022 等於 755
local_umask=022
# 新版的 vsftpd 會限制根目錄不能開啟「寫入權限」,但我不想改 home 的權限所以要加入這行
allow_writeable_chroot=YES
# 開啟本地端帳號可以登入但不能切換上層資料夾
chroot_local_user=YES
# 名單內的帳號例外可以到上層目錄
chroot_list_file=/etc/vsftpd.chroot_list
重新啟動 vsftpd
後記
這一切都就緒後發現出現了 530 Login incorrect. 這個錯誤
後來查了一下發現是 pam 設定的問題,因為 vsftpd 預設是載入 pam_shells.so 而不是 pam_nologin.so 所以要改 vsftpd
sudo vi /etc/pam.d/vsftpd
auth required pam_shells.so 改成 auth required pam_nologin.so