Question: The question is simple, I want to list all the user accounts which can log in to my system, but I'm not sure if that all the users in /etc/passwd are "could login" users?

Details:

I can see users whose shells are set to `/usr/sbin/nologin` and `/bin/false` in `/etc/passwd`, does that mean they cannot login?

I also know that I can set the encrypted password of user to `*` or `!` in `/etc/shadow` to disable an account, so the "disabled user" should also be treat as "cannot log in" user, right?

Answer: 
There is a difference between disabling the user and setting the shell to /bin/false or similar.

Setting the shell to /bin/false prevents the user from getting a shell, but they can still log in to the system if local users are used for something else (mail authentication, ftp, and so on). Disabling the user makes it impossible for him to use any services of the server that use local users.
In addition to the above, users may be locked out from a system even though their password entry looks correct using several different methods.

/etc/security/access.conf can be used to limit who can log in.

There are many PAM modules that can be configured to restrict specific users, or modify login behavior based on need. (i.e. no home directory on the server disallows login.)