From cceb0a6eb41ed0ad3682c6d29cd05c49c0301e8f Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Wed, 31 Dec 2025 21:03:29 +0800 Subject: [PATCH] fix(permissions): manage umask for sidecar process in CoreManager on Unix Co-authored-by: KaguraNaku <97681505+KaguraNaku@users.noreply.github.com> --- crates/tauri-plugin-clash-verge-sysinfo/src/lib.rs | 2 ++ src-tauri/src/core/manager/state.rs | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/crates/tauri-plugin-clash-verge-sysinfo/src/lib.rs b/crates/tauri-plugin-clash-verge-sysinfo/src/lib.rs index 3d8642145..47be5fb5b 100644 --- a/crates/tauri-plugin-clash-verge-sysinfo/src/lib.rs +++ b/crates/tauri-plugin-clash-verge-sysinfo/src/lib.rs @@ -7,6 +7,8 @@ pub mod commands; #[cfg(windows)] use deelevate::{PrivilegeLevel, Token}; +#[cfg(unix)] +pub use libc; use parking_lot::RwLock; use sysinfo::{Networks, System}; use tauri::{ diff --git a/src-tauri/src/core/manager/state.rs b/src-tauri/src/core/manager/state.rs index e2c9e2302..7494c716b 100644 --- a/src-tauri/src/core/manager/state.rs +++ b/src-tauri/src/core/manager/state.rs @@ -31,6 +31,8 @@ impl CoreManager { let clash_core = Config::verge().await.latest_arc().get_valid_clash_core(); let config_dir = dirs::app_home_dir()?; + #[cfg(unix)] + let previous_mask = unsafe { tauri_plugin_clash_verge_sysinfo::libc::umask(0o007) }; let (mut rx, child) = app_handle .shell() .sidecar(clash_core.as_str())? @@ -47,6 +49,10 @@ impl CoreManager { &IClashTemp::guard_external_controller_ipc(), ]) .spawn()?; + #[cfg(unix)] + unsafe { + tauri_plugin_clash_verge_sysinfo::libc::umask(previous_mask) + }; let pid = child.pid(); logging!(trace, Type::Core, "Sidecar started with PID: {}", pid);