42 lines
914 B
Python
42 lines
914 B
Python
"""User existence and attribute probes."""
|
|
|
|
import pwd
|
|
import grp
|
|
|
|
|
|
def user_exists(username: str) -> bool:
|
|
"""Check if a system user exists."""
|
|
try:
|
|
pwd.getpwnam(username)
|
|
return True
|
|
except KeyError:
|
|
return False
|
|
|
|
|
|
def user_uid(username: str) -> int | None:
|
|
try:
|
|
return pwd.getpwnam(username).pw_uid
|
|
except KeyError:
|
|
return None
|
|
|
|
def user_gid(username: str) -> int | None:
|
|
try:
|
|
return pwd.getpwnam(username).pw_gid
|
|
except KeyError:
|
|
return None
|
|
|
|
def user_in_group(username: str, groupname: str) -> bool:
|
|
"""Check if a user is a member of a group."""
|
|
try:
|
|
group = grp.getgrnam(groupname)
|
|
return username in group.gr_mem
|
|
except KeyError:
|
|
return False
|
|
|
|
|
|
def user_shell(username: str) -> str | None:
|
|
try:
|
|
return pwd.getpwnam(username).pw_shell
|
|
except KeyError:
|
|
return None
|