summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2018-12-03 12:31:01 +0100
committerLinus Färnstrand <linus@mullvad.net>2018-12-03 12:31:01 +0100
commit7907b8664b25da7fb1ebea0ff17e4c9d4aa5aee8 (patch)
treeb302ef3cb03c95260572a2dc68a4d3a2a4ec3c8b
parentbc1dfe7d6a8af8ffdf6ccdf46f98566bf841bb24 (diff)
parent9810804eaa7378a4f041c7c1aaf0bcddfdc85a94 (diff)
downloadmullvadvpn-7907b8664b25da7fb1ebea0ff17e4c9d4aa5aee8.tar.xz
mullvadvpn-7907b8664b25da7fb1ebea0ff17e4c9d4aa5aee8.zip
Merge branch 'fix-macos-log-dir-permissions'
-rw-r--r--CHANGELOG.md3
-rwxr-xr-xdist-assets/pkg-scripts/preinstall1
-rw-r--r--mullvad-daemon/src/lib.rs4
-rw-r--r--mullvad-paths/src/cache.rs2
-rw-r--r--mullvad-paths/src/lib.rs13
-rw-r--r--mullvad-paths/src/logs.rs8
-rw-r--r--mullvad-paths/src/settings.rs2
7 files changed, 28 insertions, 5 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a801e5e423..3ea3be3385 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -45,6 +45,9 @@ Line wrap the file at 100 chars. Th
- Disable keep alive on API RPC requests. Should stop reuse of invalid sockets after tunnel state
changes.
+#### macOS
+- Fix permissions on log dir so problem-report tool has permission to read daemon logs.
+
#### Windows
- Use proper app id in the registry. This avoids false-positives with certain anti-virus software.
- Handle sleep/resume events to quickly restore the tunnel when the machine wakes up.
diff --git a/dist-assets/pkg-scripts/preinstall b/dist-assets/pkg-scripts/preinstall
index b9c5e69b82..0b243f255b 100755
--- a/dist-assets/pkg-scripts/preinstall
+++ b/dist-assets/pkg-scripts/preinstall
@@ -5,6 +5,7 @@ set -eux
LOG_DIR=/var/log/mullvad-vpn
mkdir -p $LOG_DIR
+chmod 755 $LOG_DIR
exec 2>&1 > $LOG_DIR/preinstall.log
echo "Running preinstall at $(date)"
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs
index 16f9123bb7..57755f83b5 100644
--- a/mullvad-daemon/src/lib.rs
+++ b/mullvad-daemon/src/lib.rs
@@ -320,7 +320,9 @@ impl Daemon {
}
ManagementInterfaceEvent(event) => self.handle_management_interface_event(event),
ManagementInterfaceExited => {
- return Err(ErrorKind::ManagementInterfaceError("Server exited unexpectedly").into())
+ return Err(
+ ErrorKind::ManagementInterfaceError("Server exited unexpectedly").into(),
+ );
}
TriggerShutdown => self.handle_trigger_shutdown_event(),
}
diff --git a/mullvad-paths/src/cache.rs b/mullvad-paths/src/cache.rs
index 78b7803eba..094283bca6 100644
--- a/mullvad-paths/src/cache.rs
+++ b/mullvad-paths/src/cache.rs
@@ -6,7 +6,7 @@ use std::path::PathBuf;
/// Creates and returns the cache directory pointed to by `MULLVAD_CACHE_DIR`, or the default
/// one if that variable is unset.
pub fn cache_dir() -> Result<PathBuf> {
- crate::create_and_return(get_cache_dir)
+ crate::create_and_return(get_cache_dir, None)
}
fn get_cache_dir() -> Result<PathBuf> {
diff --git a/mullvad-paths/src/lib.rs b/mullvad-paths/src/lib.rs
index b95e281f19..1098332564 100644
--- a/mullvad-paths/src/lib.rs
+++ b/mullvad-paths/src/lib.rs
@@ -13,6 +13,10 @@ error_chain! {
description("Failed to create directory")
display("Failed to create directory {}", path.display())
}
+ SetDirPermissionFailed(path: PathBuf) {
+ description("Failed to set directory permissions")
+ display("Failed to set directory permissions on {}", path.display())
+ }
#[cfg(any(windows, target_os = "macos"))]
FindDirError { description("Not able to find requested directory" )}
#[cfg(windows)]
@@ -35,9 +39,16 @@ fn get_allusersprofile_dir() -> Result<PathBuf> {
}
}
-fn create_and_return(dir_fn: fn() -> Result<PathBuf>) -> Result<PathBuf> {
+fn create_and_return(
+ dir_fn: fn() -> Result<PathBuf>,
+ permissions: Option<fs::Permissions>,
+) -> Result<PathBuf> {
let dir = dir_fn()?;
fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed(dir.clone()))?;
+ if let Some(permissions) = permissions {
+ fs::set_permissions(&dir, permissions)
+ .chain_err(|| ErrorKind::SetDirPermissionFailed(dir.clone()))?;
+ }
Ok(dir)
}
diff --git a/mullvad-paths/src/logs.rs b/mullvad-paths/src/logs.rs
index 91f92c82bc..13c4bcf35a 100644
--- a/mullvad-paths/src/logs.rs
+++ b/mullvad-paths/src/logs.rs
@@ -1,12 +1,18 @@
use crate::Result;
use std::env;
+#[cfg(unix)]
+use std::os::unix::fs::PermissionsExt;
use std::path::PathBuf;
/// Creates and returns the logging directory pointed to by `MULLVAD_LOG_DIR`, or the default
/// one if that variable is unset.
pub fn log_dir() -> Result<PathBuf> {
- crate::create_and_return(get_log_dir)
+ #[cfg(unix)]
+ let permissions = Some(PermissionsExt::from_mode(0o755));
+ #[cfg(not(unix))]
+ let permissions = None;
+ crate::create_and_return(get_log_dir, permissions)
}
/// Get the logging directory, but don't try to create it.
diff --git a/mullvad-paths/src/settings.rs b/mullvad-paths/src/settings.rs
index 82872f38a4..1196adc77e 100644
--- a/mullvad-paths/src/settings.rs
+++ b/mullvad-paths/src/settings.rs
@@ -6,7 +6,7 @@ use std::path::PathBuf;
/// Creates and returns the settings directory pointed to by `MULLVAD_SETTINGS_DIR`, or the default
/// one if that variable is unset.
pub fn settings_dir() -> Result<PathBuf> {
- crate::create_and_return(get_settings_dir)
+ crate::create_and_return(get_settings_dir, None)
}
fn get_settings_dir() -> Result<PathBuf> {