fix(permissions): manage umask for sidecar process in CoreManager on Unix

Co-authored-by: KaguraNaku <97681505+KaguraNaku@users.noreply.github.com>
This commit is contained in:
Tunglies
2025-12-31 21:03:29 +08:00
parent cb5a2e7ce3
commit cceb0a6eb4
2 changed files with 8 additions and 0 deletions

View File

@@ -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::{

View File

@@ -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);