From e3ac7d6fc56fb073616aeb44ada6d02ed34cb7e4 Mon Sep 17 00:00:00 2001 From: Qstick Date: Sun, 22 Nov 2020 11:25:40 -0500 Subject: [PATCH] Fixed binary execute permissions for osx and Radarr Fixes #5388 Co-Authored-By: Taloth --- src/NzbDrone.Common/Disk/DiskProviderBase.cs | 1 + src/NzbDrone.Common/Disk/IDiskProvider.cs | 1 + src/NzbDrone.Mono/Disk/DiskProvider.cs | 16 ++++++++++++++-- .../UpdateEngine/InstallUpdateService.cs | 2 +- src/NzbDrone.Windows/Disk/DiskProvider.cs | 4 ++++ 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/NzbDrone.Common/Disk/DiskProviderBase.cs b/src/NzbDrone.Common/Disk/DiskProviderBase.cs index 440b7c57f..d4d2c5668 100644 --- a/src/NzbDrone.Common/Disk/DiskProviderBase.cs +++ b/src/NzbDrone.Common/Disk/DiskProviderBase.cs @@ -30,6 +30,7 @@ public static StringComparison PathStringComparison public abstract long? GetAvailableSpace(string path); public abstract void InheritFolderPermissions(string filename); public abstract void SetEveryonePermissions(string filename); + public abstract void SetFilePermissions(string path, string mask, string group); public abstract void SetPermissions(string path, string mask, string group); public abstract void CopyPermissions(string sourcePath, string targetPath); public abstract long? GetTotalSize(string path); diff --git a/src/NzbDrone.Common/Disk/IDiskProvider.cs b/src/NzbDrone.Common/Disk/IDiskProvider.cs index 91524470f..4f1cad811 100644 --- a/src/NzbDrone.Common/Disk/IDiskProvider.cs +++ b/src/NzbDrone.Common/Disk/IDiskProvider.cs @@ -11,6 +11,7 @@ public interface IDiskProvider long? GetAvailableSpace(string path); void InheritFolderPermissions(string filename); void SetEveryonePermissions(string filename); + void SetFilePermissions(string path, string mask, string group); void SetPermissions(string path, string mask, string group); void CopyPermissions(string sourcePath, string targetPath); long? GetTotalSize(string path); diff --git a/src/NzbDrone.Mono/Disk/DiskProvider.cs b/src/NzbDrone.Mono/Disk/DiskProvider.cs index 86369b60a..e14eee8ba 100644 --- a/src/NzbDrone.Mono/Disk/DiskProvider.cs +++ b/src/NzbDrone.Mono/Disk/DiskProvider.cs @@ -61,10 +61,15 @@ public override void SetEveryonePermissions(string filename) { } + public override void SetFilePermissions(string path, string mask, string group) + { + var permissions = NativeConvert.FromOctalPermissionString(mask); + + SetPermissions(path, mask, group, permissions); + } + public override void SetPermissions(string path, string mask, string group) { - _logger.Debug("Setting permissions: {0} on {1}", mask, path); - var permissions = NativeConvert.FromOctalPermissionString(mask); if (File.Exists(path)) @@ -72,6 +77,13 @@ public override void SetPermissions(string path, string mask, string group) permissions = GetFilePermissions(permissions); } + SetPermissions(path, mask, group, permissions); + } + + protected void SetPermissions(string path, string mask, string group, FilePermissions permissions) + { + _logger.Debug("Setting permissions: {0} on {1}", mask, path); + // Preserve non-access permissions if (Syscall.stat(path, out var curStat) < 0) { diff --git a/src/NzbDrone.Update/UpdateEngine/InstallUpdateService.cs b/src/NzbDrone.Update/UpdateEngine/InstallUpdateService.cs index ecf6c144a..950cfd961 100644 --- a/src/NzbDrone.Update/UpdateEngine/InstallUpdateService.cs +++ b/src/NzbDrone.Update/UpdateEngine/InstallUpdateService.cs @@ -131,7 +131,7 @@ public void Start(string installationFolder, int processId) // Set executable flag on app if (OsInfo.IsOsx || (OsInfo.IsLinux && PlatformInfo.IsNetCore)) { - _diskProvider.SetPermissions(Path.Combine(installationFolder, "Radarr"), "755", null); + _diskProvider.SetFilePermissions(Path.Combine(installationFolder, "Radarr"), "755", null); } } catch (Exception e) diff --git a/src/NzbDrone.Windows/Disk/DiskProvider.cs b/src/NzbDrone.Windows/Disk/DiskProvider.cs index 3f648e66a..d8b9dc448 100644 --- a/src/NzbDrone.Windows/Disk/DiskProvider.cs +++ b/src/NzbDrone.Windows/Disk/DiskProvider.cs @@ -91,6 +91,10 @@ public override void SetEveryonePermissions(string filename) } } + public override void SetFilePermissions(string path, string mask, string group) + { + } + public override void SetPermissions(string path, string mask, string group) { }