diff --git a/helpers/enter-grain-source/Cargo.lock b/helpers/enter-grain-source/Cargo.lock index 435954f..5194f00 100644 --- a/helpers/enter-grain-source/Cargo.lock +++ b/helpers/enter-grain-source/Cargo.lock @@ -1,4 +1,6 @@ -[root] +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] name = "enter_grain" version = "0.1.0" dependencies = [ @@ -10,3 +12,5 @@ name = "syscall" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[metadata] +"checksum syscall 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dae2c4de039bf338dd96f46621f20222c4101045dac5403b46f472608cb5b556" diff --git a/helpers/enter-grain-source/src/main.rs b/helpers/enter-grain-source/src/main.rs index 4cf7512..032e964 100644 --- a/helpers/enter-grain-source/src/main.rs +++ b/helpers/enter-grain-source/src/main.rs @@ -1,8 +1,6 @@ -#![feature(alloc_system)] -extern crate alloc_system; - // use std::env; -use std::fs::File; +use std::fs::{File, metadata}; +use std::os::unix::fs::MetadataExt; use std::io::Read; use std::ptr; use std::env; @@ -74,13 +72,12 @@ fn wait_all_children() { } } -fn setuid_setgid_1000() { - // These are the right UID & GID because they are what Sandstorm - // uses inside the user namespace. - let one_thousand = 1000usize; +fn setuid_setgid() { + let meta = metadata("/var").unwrap(); + unsafe { - syscall!(SETUID, one_thousand); - syscall!(SETGID, one_thousand); + syscall!(SETUID, meta.uid()); + syscall!(SETGID, meta.gid()); } } @@ -173,7 +170,7 @@ fn main() { let fork_result = fork(); if fork_result == 0 { // in the child - setuid_setgid_1000(); + setuid_setgid(); execve_bash(result); } else { // in the parent diff --git a/helpers/enter_grain b/helpers/enter_grain index 9ae01f6..cdb2b82 100755 Binary files a/helpers/enter_grain and b/helpers/enter_grain differ diff --git a/helpers/enter_grain.sha1 b/helpers/enter_grain.sha1 index aa29090..576232a 100644 --- a/helpers/enter_grain.sha1 +++ b/helpers/enter_grain.sha1 @@ -1 +1 @@ -11198904136a7e8079d41ef50af613d21786b5b8 enter_grain +3e1a80bd7ca1f61de6b3044e904947264e6f6e53 enter_grain