| 
22 | 22 |                             to_bin_sha  | 
23 | 23 |                         )  | 
24 | 24 | 
 
  | 
 | 25 | +# Import the user database on unix based systems  | 
 | 26 | +if os.name == "posix":  | 
 | 27 | +    import pwd  | 
 | 28 | +      | 
25 | 29 | __all__ = ( "stream_copy", "join_path", "to_native_path_windows", "to_native_path_linux",   | 
26 | 30 |             "join_path_native", "Stats", "IndexFileSHA1Writer", "Iterable", "IterableList",   | 
27 | 31 |             "BlockingLockFile", "LockFile", 'Actor', 'get_user_id', 'assure_directory_exists',  | 
@@ -113,12 +117,17 @@ def assure_directory_exists(path, is_file=False):  | 
113 | 117 | 
 
  | 
114 | 118 | def get_user_id():  | 
115 | 119 |     """:return: string identifying the currently active system user as name@node  | 
116 |  | -    :note: user can be set with the 'USER' environment variable, usually set on windows"""  | 
117 |  | -    ukn = 'UNKNOWN'  | 
118 |  | -    username = os.environ.get('USER', os.environ.get('USERNAME', ukn))  | 
119 |  | -    if username == ukn and hasattr(os, 'getlogin'):  | 
120 |  | -        username = os.getlogin()  | 
121 |  | -    # END get username from login  | 
 | 120 | +    :note: user can be set with the 'USER' environment variable, usually set on windows  | 
 | 121 | +    :note: on unix based systems you can use the password database  | 
 | 122 | +    to get the login name of the effective process user"""  | 
 | 123 | +    if os.name == "posix":  | 
 | 124 | +        username = pwd.getpwuid(os.geteuid()).pw_name  | 
 | 125 | +    else:  | 
 | 126 | +        ukn = 'UNKNOWN'  | 
 | 127 | +        username = os.environ.get('USER', os.environ.get('USERNAME', ukn))  | 
 | 128 | +        if username == ukn and hasattr(os, 'getlogin'):  | 
 | 129 | +            username = os.getlogin()  | 
 | 130 | +        # END get username from login  | 
122 | 131 |     return "%s@%s" % (username, platform.node())  | 
123 | 132 | 
 
  | 
124 | 133 | #} END utilities  | 
 | 
0 commit comments