#31945: PermissionError due to unjustified attempt to access '/usr' when using
manage.py after updating from 3.0.8 to 3.1.0
-----------------------------------------+---------------------------------
               Reporter:  tytusd         |          Owner:  nobody
                   Type:  Bug            |         Status:  new
              Component:  Uncategorized  |        Version:  3.1
               Severity:  Normal         |       Keywords:  PermissionError
           Triage Stage:  Unreviewed     |      Has patch:  0
    Needs documentation:  0              |    Needs tests:  0
Patch needs improvement:  0              |  Easy pickings:  0
                  UI/UX:  0              |
-----------------------------------------+---------------------------------
 After updating Django from 3.0.8 to 3.1.0 it became unusable - I cannot
 call any manage.py management command in the production environment, where
 the user does not have root access and has very limited access to the /usr
 directory (it is a managed environment). Normally everything works fine,
 as Django projects run within virtual environments. Unfortunately, after
 the update, the Django code clearly attempts to access /usr directory
 (even though it is running inside of a virtual environment located
 elsewhere, within the user home directory. After downgrading back to 3.0.8
 everything works fine again.

 Stack trace below:

 {{{
 (web) [XYZ@s39]:<~/domains/XXX/public_python>$ python manage.py migrate
 Traceback (most recent call last):
   File "manage.py", line 21, in <module>
     main()
   File "manage.py", line 17, in main
     execute_from_command_line(sys.argv)
   File "/usr/home/XYZ/.virtualenvs/web/lib/python3.6/site-
 packages/django/core/management/__init__.py", line 401, in
 execute_from_command_line
     utility.execute()
   File "/usr/home/XYZ/.virtualenvs/web/lib/python3.6/site-
 packages/django/core/management/__init__.py", line 377, in execute
     django.setup()
   File "/usr/home/XYZ/.virtualenvs/web/lib/python3.6/site-
 packages/django/__init__.py", line 24, in setup
     apps.populate(settings.INSTALLED_APPS)
   File "/usr/home/XYZ/.virtualenvs/web/lib/python3.6/site-
 packages/django/apps/registry.py", line 114, in populate
     app_config.import_models()
   File "/usr/home/XYZ/.virtualenvs/web/lib/python3.6/site-
 packages/django/apps/config.py", line 211, in import_models
     self.models_module = import_module(models_module_name)
   File
 "/usr/home/XYZ/.virtualenvs/web/lib/python3.6/importlib/__init__.py", line
 126, in import_module
     return _bootstrap._gcd_import(name[level:], package, level)
   File "<frozen importlib._bootstrap>", line 994, in _gcd_import
   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
   File "<frozen importlib._bootstrap>", line 955, in
 _find_and_load_unlocked
   File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
   File "<frozen importlib._bootstrap_external>", line 678, in exec_module
   File "<frozen importlib._bootstrap>", line 219, in
 _call_with_frames_removed
   File "/usr/home/XYZ/.virtualenvs/web/lib/python3.6/site-
 packages/django/contrib/auth/models.py", line 2, in <module>
     from django.contrib.auth.base_user import AbstractBaseUser,
 BaseUserManager
   File "/usr/home/XYZ/.virtualenvs/web/lib/python3.6/site-
 packages/django/contrib/auth/base_user.py", line 8, in <module>
     from django.contrib.auth import password_validation
   File "/usr/home/XYZ/.virtualenvs/web/lib/python3.6/site-
 packages/django/contrib/auth/password_validation.py", line 160, in
 <module>
     class CommonPasswordValidator:
   File "/usr/home/XYZ/.virtualenvs/web/lib/python3.6/site-
 packages/django/contrib/auth/password_validation.py", line 170, in
 CommonPasswordValidator
     DEFAULT_PASSWORD_LIST_PATH =
 Path(__file__).resolve(strict=True).parent / 'common-passwords.txt.gz'
   File "/usr/local/lib/python3.6/pathlib.py", line 1141, in resolve
     s = self._flavour.resolve(self, strict=strict)
   File "/usr/local/lib/python3.6/pathlib.py", line 346, in resolve
     return _resolve(base, str(path)) or sep
   File "/usr/local/lib/python3.6/pathlib.py", line 330, in _resolve
     target = accessor.readlink(newpath)
   File "/usr/local/lib/python3.6/pathlib.py", line 440, in readlink
     return os.readlink(path)
 PermissionError: [Errno 13] Permission denied: '/usr'
 (web) [XYZ@s39]:<~/domains/XXX/public_python>$ pip install Django==3.0.8
 Collecting Django==3.0.8
   Downloading Django-3.0.8-py3-none-any.whl (7.5 MB)
      |████████████████████████████████| 7.5 MB 4.5 MB/s
 Requirement already satisfied: sqlparse>=0.2.2 in
 /usr/home/XYZ/.virtualenvs/web/lib/python3.6/site-packages (from
 Django==3.0.8) (0.3.1)
 Requirement already satisfied: asgiref~=3.2 in
 /usr/home/XYZ/.virtualenvs/web/lib/python3.6/site-packages (from
 Django==3.0.8) (3.2.10)
 Requirement already satisfied: pytz in
 /usr/home/XYZ/.virtualenvs/web/lib/python3.6/site-packages (from
 Django==3.0.8) (2020.1)
 Installing collected packages: Django
   Attempting uninstall: Django
     Found existing installation: Django 3.1
     Uninstalling Django-3.1:
       Successfully uninstalled Django-3.1
 Successfully installed Django-3.0.8
 (web) [XYZ@s39]:<~/domains/XXX/public_python>$ python manage.py migrate
 Operations to perform:
   Apply all migrations: admin, auth, contenttypes, database, pages,
 sessions
 Running migrations:
   No migrations to apply.
 (web) [XYZ@s39]:<~/domains/XXX/public_python>$
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/31945>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/049.ec7c64390d9f9116491203914550ad52%40djangoproject.com.

Reply via email to