Skip to content

-m pdb -p -- other side cannot read debug script due to too-strict permissions #134546

Closed
@asottile

Description

@asottile

Bug report

Bug description:

  1. run python3.14
  2. find its pid
  3. sudo python3.14 -m pdb -p $pid

the pdb tab will hang, the other side will display similar to:

Python 3.14.0b1 (main, May  8 2025, 08:57:13) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> Can't open debugger script /tmp/tmpmbdwo7d_:
                                                Traceback (most recent call last):
    File "/usr/lib/python3.14/_pyrepl/unix_console.py", line 422, in wait
                                                                             or bool(self.pollob.poll(timeout))
                               PermissionError: [Errno 13] Permission denied: '/tmp/tmpmbdwo7d_'

the debugger script needs to at least be readable by the unprivileged user to be opened:

$ ls -al /tmp/tmpmbdwo7d_
-rw------- 1 root root 190 May 22 16:51 /tmp/tmpmbdwo7d_

tempfile.NamedTemporaryFile("w", delete_on_close=False)

I believe a patch similar to this fixes it:

diff --git a/Lib/pdb.py b/Lib/pdb.py
index 78ee35f61bb..bb12d1baae8 100644
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -75,6 +75,7 @@
 import code
 import glob
 import json
+import stat
 import token
 import types
 import atexit
@@ -3418,6 +3419,7 @@ def attach(pid, commands=()):
             )
         )
         connect_script.close()
+        os.chmod(connect_script.name, os.stat(connect_script.name).st_mode | stat.S_IRGRP | stat.S_IROTH)
         sys.remote_exec(pid, connect_script.name)
 
         # TODO Add a timeout? Or don't bother since the user can ^C?

CPython versions tested on:

3.14

Operating systems tested on:

Linux

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.14bugs and security fixes3.15new features, bugs and security fixesstdlibPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions