|
45 | 45 | """ |
46 | 46 |
|
47 | 47 | from contextlib import suppress |
| 48 | +import getpass |
48 | 49 | import os |
49 | 50 | import pwd |
50 | 51 | import socket |
@@ -91,7 +92,7 @@ def __init__(self, expire): |
91 | 92 | self._host = None # preferred name of localhost |
92 | 93 | self._host_exs = {} # host: socket.gethostbyname_ex(host), ... |
93 | 94 | self._remote_hosts = {} # host: is_remote, ... |
94 | | - self.user_pwent = None |
| 95 | + self._user_pwent = None |
95 | 96 |
|
96 | 97 | @staticmethod |
97 | 98 | def get_local_ip_address(target): |
@@ -180,21 +181,23 @@ def get_fqdn_by_host(self, target): |
180 | 181 |
|
181 | 182 | def get_user(self): |
182 | 183 | """Return name of current user.""" |
183 | | - return self._get_user_pwent().pw_name |
| 184 | + # NOTE: don't use pwnam |
| 185 | + # see https://github.com/cylc/cylc-flow/issues/7240 |
| 186 | + return getpass.getuser() |
184 | 187 |
|
185 | 188 | def get_user_home(self): |
186 | 189 | """Return home directory of current user.""" |
187 | 190 | return self._get_user_pwent().pw_dir |
188 | 191 |
|
189 | 192 | def _get_user_pwent(self): |
190 | 193 | """Ensure self.user_pwent is set to current user's password entry.""" |
191 | | - if self.user_pwent is None: |
| 194 | + if self._user_pwent is None: |
192 | 195 | my_user_name = os.environ.get('USER') |
193 | 196 | if my_user_name: |
194 | | - self.user_pwent = pwd.getpwnam(my_user_name) |
| 197 | + self._user_pwent = pwd.getpwnam(my_user_name) |
195 | 198 | else: |
196 | | - self.user_pwent = pwd.getpwuid(os.getuid()) |
197 | | - return self.user_pwent |
| 199 | + self._user_pwent = pwd.getpwuid(os.getuid()) |
| 200 | + return self._user_pwent |
198 | 201 |
|
199 | 202 | def is_remote_host(self, name): |
200 | 203 | """Return True if name has different IP address than the current host. |
|
0 commit comments