I have vsftpd server that allow local users to login to ftp. How to prevent some local user to login to shell account and allow only login to ftp server (vsftpd) ?
You should use virtual users and be careful with logins match between them
In short: Use virtual users.
I don't think using virtual users is necessary at all. Regular users will do just fine.
Add a line to /etc/shells, if it is not already there:
For the users you would like only to be able to use FTP, edit /etc/passwd and change their shell (usually defaults to with /bin/bash or /bin/sh) to /bin/false
This way, that user will only be able to login using FTP.