Allowing FTP access to a local user without allowing SSH/command line access

Check the file /etc/pam.d/vsftpd, the pam service for vsftpd uses pam_shells.so

pam_shells.so

pam_shells is a PAM module that only allows access to the system if the users shell is listed in /etc/shells.

It also checks if /etc/shells is a plain file and not world writable.

you only need to add /bin/false to /etc/shells file


You could use vsftpd's "virtual users", where users in the virtual users database have only ftp access and nothing else.