diff --git a/codex-rs/linux-sandbox/src/linux_run_main.rs b/codex-rs/linux-sandbox/src/linux_run_main.rs index 27cdb5032..346b1f14c 100644 --- a/codex-rs/linux-sandbox/src/linux_run_main.rs +++ b/codex-rs/linux-sandbox/src/linux_run_main.rs @@ -1242,7 +1242,10 @@ fn synthetic_mount_marker_dir(path: &Path) -> PathBuf { } fn synthetic_mount_registry_root() -> PathBuf { - std::env::temp_dir().join("codex-bwrap-synthetic-mount-targets") + let effective_uid = unsafe { libc::geteuid() }; + std::env::temp_dir().join(format!( + "codex-bwrap-synthetic-mount-targets-{effective_uid}" + )) } fn hash_path(path: &Path) -> u64 { diff --git a/codex-rs/linux-sandbox/src/linux_run_main_tests.rs b/codex-rs/linux-sandbox/src/linux_run_main_tests.rs index 95db9d9de..4441af780 100644 --- a/codex-rs/linux-sandbox/src/linux_run_main_tests.rs +++ b/codex-rs/linux-sandbox/src/linux_run_main_tests.rs @@ -302,6 +302,17 @@ fn cleanup_synthetic_mount_targets_removes_only_empty_mount_targets() { assert!(!missing_file.exists()); } +#[test] +fn synthetic_mount_registry_root_is_unique_to_effective_user() { + let effective_uid = unsafe { libc::geteuid() }; + assert_eq!( + synthetic_mount_registry_root(), + std::env::temp_dir().join(format!( + "codex-bwrap-synthetic-mount-targets-{effective_uid}" + )) + ); +} + #[test] fn cleanup_synthetic_mount_targets_waits_for_other_active_registrations() { let temp_dir = tempfile::TempDir::new().expect("tempdir");