homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: python shouldn't need username in passwd database
Type: behavior Stage: resolved
Components: Library (Lib) Versions: Python 3.2, Python 3.3, Python 2.7
process
Status: closed Resolution: duplicate
Dependencies: Superseder: Python startup should not require passwd entry
View: 10496
Assigned To: Nosy List: aikinci, arekm, eric.araujo, georg.brandl, loewis, nadeem.vawda, vstinner
Priority: normal Keywords: buildbot, easy, patch

Created on 2012年03月09日 09:21 by arekm, last changed 2022年04月11日 14:57 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
issue14238.patch aikinci, 2012年03月12日 21:44 review
Messages (12)
msg155215 - (view) Author: Arkadiusz Miśkiewicz (arekm) Date: 2012年03月09日 09:21
I'm trying to run python from UID which doesn't have entry in passwd database. This fails with:
 Traceback (most recent call last):
File "/usr/share/python2.7/site.py", line 567, in <module>
File "/usr/share/python2.7/site.py", line 549, in main
File "/usr/share/python2.7/site.py", line 278, in addusersitepackages
File "/usr/share/python2.7/site.py", line 253, in getusersitepackages
File "/usr/share/python2.7/site.py", line 243, in getuserbase
File "/usr/share/python2.7/sysconfig.py", line 522, in get_config_var
File "/usr/share/python2.7/sysconfig.py", line 426, in get_config_vars
File "/usr/share/python2.7/sysconfig.py", line 184, in _getuserbase
File "/usr/share/python2.7/sysconfig.py", line 171, in joinuser
File "/usr/share/python2.7/posixpath.py", line 260, in expanduser
KeyError: 'getpwuid(): uid not found: 51'
msg155216 - (view) Author: Nadeem Vawda (nadeem.vawda) * (Python committer) Date: 2012年03月09日 09:31
This looks similar to a sporadic failure on the debian bigmem buildbot:
http://www.python.org/dev/buildbot/all/builders/AMD64%20debian%20bigmem%203.x/builds/168/steps/test/logs/stdio
 ERROR: test_expanduser (test.test_posixpath.PosixPathTest)
 ----------------------------------------------------------------------
 Traceback (most recent call last):
 File "/var/tmpfs/martin.vonloewis/3.x.loewis-parallel2/build/Lib/test/test_posixpath.py", line 305, in test_expanduser
 home = pwd.getpwuid(os.getuid()).pw_dir
 KeyError: 'getpwuid(): uid not found: 5025'
msg155218 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2012年03月09日 09:37
I agree -- there should be a guard here that just doesn't add user site directories if the lookup fails.
msg155279 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2012年03月10日 02:14
> there should be a guard here that just doesn't add user site directories if the lookup fails.
Agreed too. site is easy to fix (I can do it or review a patch), but we also need to fix sysconfig; I think the right thing to do would be not to have a config var named 'userbase' when run from a UID without passwd entry. This implies that the functions listed under http://docs.python.org/library/sysconfig#installation-paths would also need to omit *user schemes.
msg155465 - (view) Author: Ali Ikinci (aikinci) Date: 2012年03月12日 19:38
I have started to work on this.
msg155486 - (view) Author: Ali Ikinci (aikinci) Date: 2012年03月12日 21:44
This patch fixes the issue but needs review. It is my first patch ever so be nice :)
msg155488 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2012年03月12日 21:50
Thanks you for your contribution! I hope you’ll find fun bugs to make patches for.
Your patch looks too simplistic; in the discussion, we agreed that if the lookup fails, the site module should not add user site directories (see http://docs.python.org/library/site#site.USER_SITE or PEP 370), and your patch does not seem to do that.
Moreover, this bug has repercussions on the sysconfig module (see my previous message), which needs edits too.
BTW, I don’t know how we can test a patch for this bug; arekm, how do you run Python from a UID without passwd entry?
msg155493 - (view) Author: Arkadiusz Miśkiewicz (arekm) Date: 2012年03月12日 22:04
$ LC_ALL=C sudo -u '#9999' -g '#9999' /bin/sh -c 'unset HOME ; python -c ""'
Traceback (most recent call last):
 File "/usr/share/python2.7/site.py", line 567, in <module>
 main()
 File "/usr/share/python2.7/site.py", line 549, in main
 known_paths = addusersitepackages(known_paths)
 File "/usr/share/python2.7/site.py", line 278, in addusersitepackages
 user_site = getusersitepackages()
 File "/usr/share/python2.7/site.py", line 253, in getusersitepackages
 user_base = getuserbase() # this will also set USER_BASE
 File "/usr/share/python2.7/site.py", line 243, in getuserbase
 USER_BASE = get_config_var('userbase')
 File "/usr/share/python2.7/sysconfig.py", line 522, in get_config_var
 return get_config_vars().get(name)
 File "/usr/share/python2.7/sysconfig.py", line 426, in get_config_vars
 _CONFIG_VARS['userbase'] = _getuserbase()
 File "/usr/share/python2.7/sysconfig.py", line 184, in _getuserbase
 return env_base if env_base else joinuser("~", ".local")
 File "/usr/share/python2.7/sysconfig.py", line 171, in joinuser
 return os.path.expanduser(os.path.join(*args))
 File "/usr/share/python2.7/posixpath.py", line 260, in expanduser
 userhome = pwd.getpwuid(os.getuid()).pw_dir
KeyError: 'getpwuid(): uid not found: 9999'
msg155494 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2012年03月12日 22:07
See also the issue #10496.
msg155499 - (view) Author: Ali Ikinci (aikinci) Date: 2012年03月12日 22:18
I would suggest that this issue is the same as http://bugs.python.org/issue10496 like Victor pointed out and would say close it because it is a duplicate.
msg155529 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2012年03月13日 00:04
Indeed.
msg155531 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2012年03月13日 00:07
> This patch fixes the issue but needs review.
> It is my first patch ever so be nice :)
Python should not decide what is the default home directory. The issue is in the site module: I proposed nonexistent_user.patch in the issue #10496 to fix the issue in the site module instead.
History
Date User Action Args
2022年04月11日 14:57:27adminsetgithub: 58446
2012年03月13日 00:07:40vstinnersetmessages: + msg155531
2012年03月13日 00:04:10eric.araujosetstatus: open -> closed
resolution: duplicate
messages: + msg155529

superseder: Python startup should not require passwd entry
stage: needs patch -> resolved
2012年03月12日 22:18:44aikincisetmessages: + msg155499
2012年03月12日 22:07:27vstinnersetnosy: + vstinner
messages: + msg155494
2012年03月12日 22:04:56arekmsetmessages: + msg155493
2012年03月12日 21:50:50eric.araujosetmessages: + msg155488
2012年03月12日 21:44:32aikincisetfiles: + issue14238.patch
keywords: + patch
messages: + msg155486
2012年03月12日 19:38:28aikincisetnosy: + aikinci
messages: + msg155465
2012年03月10日 02:14:07eric.araujosetmessages: + msg155279
2012年03月09日 16:41:56pitrousetkeywords: + easy
nosy: + eric.araujo

versions: + Python 3.2
2012年03月09日 09:37:01georg.brandlsetnosy: + georg.brandl
messages: + msg155218
2012年03月09日 09:31:56nadeem.vawdasettype: behavior
components: + Library (Lib), - Interpreter Core
versions: + Python 3.3
keywords: + buildbot
nosy: + loewis, nadeem.vawda

messages: + msg155216
stage: needs patch
2012年03月09日 09:21:59arekmcreate

AltStyle によって変換されたページ (->オリジナル) /