Why do some system users have /usr/bin/false as their shell and what does that mean?
This helps to prevent users from logging on system.
Sometimes you need a user account for a specific task. Nevertheless, no one should be able to interact with this account on the computer. These are on the one hand system user accounts, on the other hand this is account, for which FTP or POP3 access is possible, but just no direct shell login.
If you look more closely at the
/etc/passwd file, you will find the
/bin/false command as a login shell for many system accounts. Actually, false is not a shell, but a command that does nothing and then also ends with a status code that signals an error. The result is simple. The user logs in and immediately sees the login prompt again.
These users exist to be the owner of specific files or processes, and are not intended to be login accounts.
If the value of the "shell" field is not listed in
/etc/shells then programs such as FTP daemons do not allow access.
Additionally, for programs that don't check
/etc/shells, we make use of the fact that
/bin/false will immediately return, so denying an interactive shell.
Some users have /usr/bin/false, others have /sbin/nologin or even /usr/bin/passwd. They can either be system users that are needed to isolate program permissions, or human users of programs that use the password files for authentication.