15 lines
664 B
Bash
Executable File

#!/bin/bash
# Returns a list of all users on the system with UID >= 1000 and their home directory and shell
# Sorted lexicographically by uid
# Uses getent passwd so as to include remote users (e.g. LDAP) in the list
# getent passwd returns a list of all users on the system, local and remote
# it may return duplicates, since a user might be listed identically in multiple nsswitch databases (e.g. files and systemd)
for uid in $(getent passwd | cut -d: -f3 | sort | uniq); do
if [ $uid -ge 1000 ]; then
# Use AWK to parse the output of the passwd entry
getent passwd $uid | awk -F: '{print "User: " $1 ", UID: " $3 ", Home: " $6 ", Shell: " $7}'
fi
done