-
-
Notifications
You must be signed in to change notification settings - Fork 32.9k
Docs/howto/remote_debugging: Give non-sudo suggestions first #139139
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
geofft
wants to merge
2
commits into
python:main
Choose a base branch
from
geofft:remote-debugging-without-sudo
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+65
−19
Open
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs another sentence explaining how to work around it (add the CAP_SYS_PTRACE capability or other similar options). Currently this is too far from where we mention it and it doesn't appear directly
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the system call is disabled because of a filter,
CAP_SYS_PTRACE
doesn't help you. The filtering happens at system call entry well before permissions are checked.It happens to be the case that if you add
CAP_SYS_PTRACE
, Docker and code derived from it (e.g. containerd) will change their system call filter to no longer exclude ptrace. See the end of the jvns blog post I linked above. However, as the blog post mentions, it is also the case that current versions of this code unconditionally permit ptrace on kernel 4.8 and above. See moby/moby@1124543ca8 (linked in jvns' post), released in Docker 19.03 (July 2019), and containerd/containerd@94faa70df4, released in containerd 1.6.7 (August 2022). So a much better solution, if it is possible, is to upgrade to one of these versions.I didn't realize the containerd change was so much more recent than the Docker change, so I think it's plausible that people are still on that version. In that case I think it's better to pass
--security-opt seccomp=unconfined
than--cap-add=SYS_PTRACE
. Technically both do more than just permitting the one syscall, the former turns off the filter entirely (i.e. it increases the attack surface of the host kernel presented to the container), but I think that's safer. I'll add that in.