feat: implement setuid/setgid syscall family #627
Closed
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.
Summary
Implement 8 syscalls for managing user and group IDs:
setuid,setgid: Set all three IDs (real, effective, saved)setreuid,setregid: Set real and effective IDssetresuid,setresgid: Set real, effective, and saved IDs independentlygetresuid,getresgid: Get all three IDsMotivation
These syscalls are commonly used by applications that need to drop privileges for security. For example, a server might start as root and then drop to a non-privileged user.
Changes
Credentials Struct
Credentialsstruct withsuid(saved-set-user-ID) andsgid(saved-set-group-ID) fieldsArc<Credentials>toRefCell<Credentials>to allow mutationSyscall Implementation
SyscallRequestvariants and parsing for all 8 syscallsTesting
Files Modified
litebox_common_linux/src/lib.rs- Added SyscallRequest variants and parsinglitebox_shim_linux/src/lib.rs- Changed credentials to RefCell, added dispatchlitebox_shim_linux/src/syscalls/process.rs- Updated Credentials struct, added handlerslitebox_shim_linux/src/loader/auxv.rs- Fixed credentials accessTesting Done