From 81cefebe967e36b7db9f9ad12f30ae0b61e3cf8b Mon Sep 17 00:00:00 2001 From: Eugene Date: Sat, 23 Mar 2024 22:03:18 +0100 Subject: [PATCH] fixed #966 - don't try to change config permissions unless necessary --- warpgate-common/src/helpers/fs.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/warpgate-common/src/helpers/fs.rs b/warpgate-common/src/helpers/fs.rs index e4d5ca1..99f5dac 100644 --- a/warpgate-common/src/helpers/fs.rs +++ b/warpgate-common/src/helpers/fs.rs @@ -1,10 +1,21 @@ use std::os::unix::prelude::PermissionsExt; use std::path::Path; +fn maybe_apply_permissions>( + path: P, + permissions: std::fs::Permissions, +) -> std::io::Result<()> { + let current = std::fs::metadata(&path)?.permissions(); + if current != permissions { + std::fs::set_permissions(path, permissions)?; + } + Ok(()) +} + pub fn secure_directory>(path: P) -> std::io::Result<()> { - std::fs::set_permissions(path.as_ref(), std::fs::Permissions::from_mode(0o700)) + maybe_apply_permissions(path.as_ref(), std::fs::Permissions::from_mode(0o700)) } pub fn secure_file>(path: P) -> std::io::Result<()> { - std::fs::set_permissions(path.as_ref(), std::fs::Permissions::from_mode(0o600)) + maybe_apply_permissions(path.as_ref(), std::fs::Permissions::from_mode(0o600)) }