fixes issue 39472: (#40341)

With python 3.6 spwd.getspnam returns PermissionError instead of
KeyError if user does not have privileges
This commit is contained in:
Artem Goncharov 2018-05-17 23:22:40 +02:00 committed by Sam Doran
parent 82f6f08712
commit db786b846f
2 changed files with 11 additions and 0 deletions

View file

@ -0,0 +1,3 @@
---
bugfixes:
- spwd - With python 3.6 spwd.getspnam returns PermissionError instead of KeyError if user does not have privileges (https://github.com/ansible/ansible/issues/39472)

View file

@ -236,6 +236,7 @@ EXAMPLES = '''
'''
import errno
import grp
import os
import platform
@ -646,6 +647,13 @@ class User(object):
return passwd, expires
except KeyError:
return passwd, expires
except OSError as e:
# Python 3.6 raises PermissionError instead of KeyError
# Due to absence of PermissionError in python2.7 need to check
# errno
if e.errno in (errno.EACCES, errno.EPERM):
return passwd, expires
raise
if not self.user_exists():
return passwd, expires