Bugfix: auth PAM check for membership in primary and supplementary groups

This commit is contained in:
Štěpán Henek 2013-09-27 21:14:27 +02:00
parent ee687bea18
commit 7c03089601

View File

@ -50,6 +50,7 @@ def is_authenticated(user, password):
# Check whether the group exists # Check whether the group exists
try: try:
# Obtain supplementary groups
members = grp.getgrnam(GROUP_MEMBERSHIP).gr_mem members = grp.getgrnam(GROUP_MEMBERSHIP).gr_mem
except KeyError: except KeyError:
log.LOGGER.debug( log.LOGGER.debug(
@ -57,18 +58,26 @@ def is_authenticated(user, password):
GROUP_MEMBERSHIP) GROUP_MEMBERSHIP)
return False return False
# Check whether the user belongs to the required group # Check whether the user exists
for member in members: try:
if member == user: # Get user primary group
log.LOGGER.debug( primary_group = grp.getgrgid(pwd.getpwnam(user).pw_gid).gr_name
"The PAM user belongs to the required group (%s)" % except KeyError:
GROUP_MEMBERSHIP) log.LOGGER.debug(
# Check the password "The PAM user (%s) doesn't exist" %
if pam.authenticate(user, password): user)
return True return False
else:
log.LOGGER.debug("Wrong PAM password") # Check whether the user belongs to the required group (primary or supplementary)
break if primary_group == GROUP_MEMBERSHIP or user in members:
log.LOGGER.debug(
"The PAM user belongs to the required group (%s)" %
GROUP_MEMBERSHIP)
# Check the password
if pam.authenticate(user, password):
return True
else:
log.LOGGER.debug("Wrong PAM password")
else: else:
log.LOGGER.debug( log.LOGGER.debug(
"The PAM user doesn't belong to the required group (%s)" % "The PAM user doesn't belong to the required group (%s)" %