Star Hype News.

Premium celebrity moments with standout appeal.

general

How to check if a new username is a system user?

By Daniel Johnston

I want to create a script that change a username. I want to check if the user is not a system user. My idea is to check /etc/passwd and pick only users with an ID between 1000 and 60000 and users that have a /home directory like

user:x:1005:1021::/home/user:/bin/sh

My grep command for now is like

egrep -E '1[0-9]{3}.*/home' /etc/passwd 

As you can see, it doesn't match my [1000-60000] pattern nor the name

1

1 Answer

You can use awk to find local users with id >= 1000:

awk -F: '$3>=1000 && $3!=65534 {print $1}' /etc/passwd

To also check for a home folder below /home:

awk -F: '$3>=1000 && $3 != 65534 && $6 ~ /^\/home/ {print $1}' /etc/passwd

Replace /etc/passwd with <(getent passwd) to list all users including network accounts ...

See also this related question, as well as this one.

3

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy