How to get local users to work with chroot on VSFtpd
First, yes FTP (not SFTP, really FTP) is an old protocol, but there are still people asking for it. So, let's give them.
The target is to give them FTP access.
Install VSFtpd
As I use Archlinux, this is done with:
pacman -S vsftpd
Create the system user.
Say you want to create "foo" user.
There is nothing difficult about that. Default HOME for the user will be "/home/foo". Don't forget to setup a password.
Create a directory named "input" (may be any name you want) inside the HOME.
mkdir -pv /home/foo/input
Disable SSH authentication with Password
From here, the created user may connect via SSH (not yet FTP), and may get through the entire filesystem...
This is not what you want, so disable SSH Password authentication in "/etc/ssh/sshd_config"
Be careful, you must then enable and setup key authentication, or you will be locked out!
Set the HOME permissions correctly
VSFtpd will refuse to start if the FTP root directory is writable by the user "foo".
As we will chroot "foo", the FTP root directory for "foo" user is "/home/foo".
Make "/home/foo" owned by "ftp":
chown -R ftp.ftp /home/foo
Then make "/home/foo/input" owned by "foo":
chown -R foo.foo /home/foo/input
Note that through FTP, the user will only be able to write in "/home/foo/input"
Configure VSFtpd itself
Configuring VSFtpd is all about a few lines to change:
local_enable=YES guest_enable=NO write_enable=YES local_umask=022 chroot_local_user=YES seccomp_sandbox=NO
Restart NSFtpd and you're done