PermissionError when attaching to a remote process despite elevated privileges (file permission)
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Documentation
Description
According to the documentation of the permission requirements for remote debugging (via sys.remote_exec), the tracer process must have elevated privileges (or CAP_SYS_PTRACE).
But I get a PermissionError in the "remote" process when it tries to open the "debugger script" after I execute the tracer program with sudo on Linux. It works if I also run the app with elevated privileges.
Reproducible example
- Create a virtual environment with Python 3.14.2 and activate it
- Create the following script
app.py
# app.py
import os
import time
print("PID:", os.getpid())
print("Waiting for interrupt", end="")
while True:
print(".", end="", flush=True)
time.sleep(1)
- Run the script above via
python app.py - Create the debugger script
debug.py
# debug.py
import sys
import textwrap
from tempfile import NamedTemporaryFile
assert len(sys.argv) >= 2, "Pass PID as first argument"
pid = int(sys.argv[1])
script = 'print("Injected!")'
with NamedTemporaryFile(mode="w", suffix=".py", delete=False) as f:
script_path = f.name
f.write(script)
print("Injecting...")
sys.remote_exec(pid, script_path)
print("Done :)")
- Run the debug script (in a new shell) via
sudo .venv/bin/python debug.py <pid-from-other-process>
Output of debug.py
Injecting...
Done :)
Output of app.py
PID: 27796
Waiting for interrupt.........Can't open debugger script /tmp/tmpsjqnnjw6.py:
Traceback (most recent call last):
File "/home/rafael/repos/rafaelwo/python-remote-exec-sudo/app.py", line 9, in <module>
time.sleep(1)
PermissionError: [Errno 13] Permission denied: '/tmp/tmpsjqnnjw6.py'
Expected output of app.py
PID: 27796
Waiting for interrupt............Injected!
....
What confuses me is that sudo .venv/bin/python -m pdb -p works when running the app as non-root. Doesn't pdb also create a temporary file and use sys.remote_exec to let the app run the debug attachment script?
Or is this a documentation issue, i.e. the app-to-be-traced also needs elevated privileges?
CPython versions tested on:
3.14
Operating systems tested on:
Linux
Linked PRs
- gh-143575
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Lesen Sie die im Issue verlinkte Dokumentation zum Remote-Debugging und reproduzieren Sie das Verhalten mit app.py und debug.py unter Linux unter Verwendung des angegebenen Python-3.14-Setups. Vergleichen Sie die dokumentierten Berechtigungsanforderungen mit sys.remote_exec und dem Verhalten von pdb -p; abgeschlossen ist die Aufgabe, wenn die Dokumentation oder das gemeldete Verhalten klar erklärt, ob die zu verfolgende Anwendung ebenfalls erhöhte Berechtigungen benötigt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools, documentation, operating-systems
- Issue-Typ
- Dokumentation
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100