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 @@ namespace NzbDrone.Common.Disk 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 @@ namespace NzbDrone.Common.Disk 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 @@ namespace NzbDrone.Mono.Disk { } + 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 @@ namespace NzbDrone.Mono.Disk 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 @@ namespace NzbDrone.Update.UpdateEngine // 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 @@ namespace NzbDrone.Windows.Disk } } + public override void SetFilePermissions(string path, string mask, string group) + { + } + public override void SetPermissions(string path, string mask, string group) { }