Port unshare user/mount namespace support from uruntime#137
Draft
Port unshare user/mount namespace support from uruntime#137
Conversation
Co-authored-by: probonopd <2480569+probonopd@users.noreply.github.com>
…ndancy Co-authored-by: probonopd <2480569+probonopd@users.noreply.github.com>
Co-authored-by: probonopd <2480569+probonopd@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Port unshare functionality to type2-runtime
Port unshare user/mount namespace support from uruntime
Nov 1, 2025
Member
|
The sentence "based on uruntime's implementation" alone qualifies for a copyright review... |
Member
|
uruntime is under the MIT License. Do you see any concerns with that @TheAssassin? We could always ask the author for explicit permission to apply this patch. For me the question is also, are there any known real world use cases for which the added complexity from this code path is justified? |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Implements automatic fallback to user+mount namespaces when SUID fusermount is unavailable, based on uruntime's implementation.
Changes
Core namespace handling
try_unshare()- Creates CLONE_NEWUSER | CLONE_NEWNS with configurable UID/GID mappingrestore_capabilities()- Restores capabilities via capget/capset syscalls after namespace entrytry_make_mount_private()- Applies MS_REC | MS_PRIVATE to prevent mount leaksis_in_user_and_mount_namespace()- Detects existing namespace via /proc/self/uid_map parsingFUSE availability enhancement
check_fuse()- Attempts unshare when SUID fusermount detection failsis_suid_exe()- Validates setuid bit + owner root for fusermount binariesUser interface
Implementation notes
__user_cap_header_struct,__user_cap_data_struct)check_fuse()even when both SUID and unshare fail to allow non-SUID fusermount attemptsOriginal prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.