2023-07-05, 07:41 AM
(This post was last modified: 2023-07-05, 07:45 AM by Sidney. Edited 2 times in total.)
I use Jellyfin on True NAS Scale, I've recently reinstalled Jellyfin so the config runs over host paths instead of PVC storage. Since then some plugins won't install anymore. Many plugins can still be installed normally. Jellyfin has full permissions over the config folder, but I think that some extensions might not be using the app user/ groups or root user/ group to install themselves.
The permissions:
Jellyfin container settings:
Installing the plugin:
Plugins that didn't have this issue:
These plugins installed normally without an error.
The error from the logs short:
[2023-07-05 09:10:22.582 +00:00] [ERR] [23] Emby.Server.Implementations.Updates.InstallationManager: Package installation failed
System.UnauthorizedAccessException: Access to the path '/config/plugins/TheTVDB_10.0.0.0/meta.json' is denied.
[2023-07-05 09:10:22.585 +00:00] [ERR] [23] Jellyfin.Server.Middleware.ExceptionMiddleware: Error processing request. URL "POST" "/Packages/Installed/TheTVDB".
System.UnauthorizedAccessException: Access to the path '/config/plugins/TheTVDB_10.0.0.0/meta.json' is denied.
The error from the logs long:
[2023-07-05 09:27:53.579 +00:00] [ERR] [34] Emby.Server.Implementations.Updates.InstallationManager: Package installation failed
System.UnauthorizedAccessException: Access to the path '/config/plugins/TheTVDB_10.0.0.0/meta.json' is denied.
---> System.IO.IOException: Operation not permitted
--- End of inner exception stack trace ---
at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func
at System.IO.Compression.ZipFileExtensions.ExtractExternalAttributes(FileStream fs, ZipArchiveEntry entry)
at System.IO.Compression.ZipFileExtensions.ExtractToFile(ZipArchiveEntry source, String destinationFileName, Boolean overwrite)
at System.IO.Compression.ZipFileExtensions.ExtractRelativeToDirectory(ZipArchiveEntry source, String destinationDirectoryName, Boolean overwrite)
at System.IO.Compression.ZipFileExtensions.ExtractToDirectory(ZipArchive source, String destinationDirectoryName, Boolean overwriteFiles)
at Emby.Server.Implementations.Updates.InstallationManager.PerformPackageInstallation(InstallationInfo package, PluginStatus status, CancellationToken cancellationToken)
at Emby.Server.Implementations.Updates.InstallationManager.PerformPackageInstallation(InstallationInfo package, PluginStatus status, CancellationToken cancellationToken)
at Emby.Server.Implementations.Updates.InstallationManager.InstallPackageInternal(InstallationInfo package, CancellationToken cancellationToken)
at Emby.Server.Implementations.Updates.InstallationManager.InstallPackage(InstallationInfo package, CancellationToken cancellationToken)
[2023-07-05 09:27:53.598 +00:00] [ERR] [34] Jellyfin.Server.Middleware.ExceptionMiddleware: Error processing request. URL "POST" "/Packages/Installed/TheTVDB".
System.UnauthorizedAccessException: Access to the path '/config/plugins/TheTVDB_10.0.0.0/meta.json' is denied.
---> System.IO.IOException: Operation not permitted
--- End of inner exception stack trace ---
at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func
at System.IO.Compression.ZipFileExtensions.ExtractExternalAttributes(FileStream fs, ZipArchiveEntry entry)
at System.IO.Compression.ZipFileExtensions.ExtractToFile(ZipArchiveEntry source, String destinationFileName, Boolean overwrite)
at System.IO.Compression.ZipFileExtensions.ExtractRelativeToDirectory(ZipArchiveEntry source, String destinationDirectoryName, Boolean overwrite)
at System.IO.Compression.ZipFileExtensions.ExtractToDirectory(ZipArchive source, String destinationDirectoryName, Boolean overwriteFiles)
at Emby.Server.Implementations.Updates.InstallationManager.PerformPackageInstallation(InstallationInfo package, PluginStatus status, CancellationToken cancellationToken)
at Emby.Server.Implementations.Updates.InstallationManager.PerformPackageInstallation(InstallationInfo package, PluginStatus status, CancellationToken cancellationToken)
at Emby.Server.Implementations.Updates.InstallationManager.InstallPackageInternal(InstallationInfo package, CancellationToken cancellationToken)
at Emby.Server.Implementations.Updates.InstallationManager.InstallPackage(InstallationInfo package, CancellationToken cancellationToken)
at Emby.Server.Implementations.Updates.InstallationManager.InstallPackage(InstallationInfo package, CancellationToken cancellationToken)
at Jellyfin.Api.Controllers.PackageController.InstallPackage(String name, Nullable
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Jellyfin.Server.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
at Jellyfin.Server.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
at Jellyfin.Server.Middleware.IpBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
at Jellyfin.Server.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Jellyfin.Server.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Jellyfin.Server.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
at Jellyfin.Server.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
at Jellyfin.Server.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
at Jellyfin.Server.Middleware.ExceptionMiddleware.Invoke(HttpContext context)
The permissions:
Jellyfin container settings:
Installing the plugin:
Plugins that didn't have this issue:
These plugins installed normally without an error.
The error from the logs short:
[2023-07-05 09:10:22.582 +00:00] [ERR] [23] Emby.Server.Implementations.Updates.InstallationManager: Package installation failed
System.UnauthorizedAccessException: Access to the path '/config/plugins/TheTVDB_10.0.0.0/meta.json' is denied.
[2023-07-05 09:10:22.585 +00:00] [ERR] [23] Jellyfin.Server.Middleware.ExceptionMiddleware: Error processing request. URL "POST" "/Packages/Installed/TheTVDB".
System.UnauthorizedAccessException: Access to the path '/config/plugins/TheTVDB_10.0.0.0/meta.json' is denied.
The error from the logs long:
[2023-07-05 09:27:53.579 +00:00] [ERR] [34] Emby.Server.Implementations.Updates.InstallationManager: Package installation failed
System.UnauthorizedAccessException: Access to the path '/config/plugins/TheTVDB_10.0.0.0/meta.json' is denied.
---> System.IO.IOException: Operation not permitted
--- End of inner exception stack trace ---
at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func
2 errorRewriter)
at Interop.CheckIo(Int64 result, String path, Boolean isDirectory, Func
2 errorRewriter)at System.IO.Compression.ZipFileExtensions.ExtractExternalAttributes(FileStream fs, ZipArchiveEntry entry)
at System.IO.Compression.ZipFileExtensions.ExtractToFile(ZipArchiveEntry source, String destinationFileName, Boolean overwrite)
at System.IO.Compression.ZipFileExtensions.ExtractRelativeToDirectory(ZipArchiveEntry source, String destinationDirectoryName, Boolean overwrite)
at System.IO.Compression.ZipFileExtensions.ExtractToDirectory(ZipArchive source, String destinationDirectoryName, Boolean overwriteFiles)
at Emby.Server.Implementations.Updates.InstallationManager.PerformPackageInstallation(InstallationInfo package, PluginStatus status, CancellationToken cancellationToken)
at Emby.Server.Implementations.Updates.InstallationManager.PerformPackageInstallation(InstallationInfo package, PluginStatus status, CancellationToken cancellationToken)
at Emby.Server.Implementations.Updates.InstallationManager.InstallPackageInternal(InstallationInfo package, CancellationToken cancellationToken)
at Emby.Server.Implementations.Updates.InstallationManager.InstallPackage(InstallationInfo package, CancellationToken cancellationToken)
[2023-07-05 09:27:53.598 +00:00] [ERR] [34] Jellyfin.Server.Middleware.ExceptionMiddleware: Error processing request. URL "POST" "/Packages/Installed/TheTVDB".
System.UnauthorizedAccessException: Access to the path '/config/plugins/TheTVDB_10.0.0.0/meta.json' is denied.
---> System.IO.IOException: Operation not permitted
--- End of inner exception stack trace ---
at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func
2 errorRewriter)
at Interop.CheckIo(Int64 result, String path, Boolean isDirectory, Func
2 errorRewriter)at System.IO.Compression.ZipFileExtensions.ExtractExternalAttributes(FileStream fs, ZipArchiveEntry entry)
at System.IO.Compression.ZipFileExtensions.ExtractToFile(ZipArchiveEntry source, String destinationFileName, Boolean overwrite)
at System.IO.Compression.ZipFileExtensions.ExtractRelativeToDirectory(ZipArchiveEntry source, String destinationDirectoryName, Boolean overwrite)
at System.IO.Compression.ZipFileExtensions.ExtractToDirectory(ZipArchive source, String destinationDirectoryName, Boolean overwriteFiles)
at Emby.Server.Implementations.Updates.InstallationManager.PerformPackageInstallation(InstallationInfo package, PluginStatus status, CancellationToken cancellationToken)
at Emby.Server.Implementations.Updates.InstallationManager.PerformPackageInstallation(InstallationInfo package, PluginStatus status, CancellationToken cancellationToken)
at Emby.Server.Implementations.Updates.InstallationManager.InstallPackageInternal(InstallationInfo package, CancellationToken cancellationToken)
at Emby.Server.Implementations.Updates.InstallationManager.InstallPackage(InstallationInfo package, CancellationToken cancellationToken)
at Emby.Server.Implementations.Updates.InstallationManager.InstallPackage(InstallationInfo package, CancellationToken cancellationToken)
at Jellyfin.Api.Controllers.PackageController.InstallPackage(String name, Nullable
1 assemblyGuid, String version, String repositoryUrl)
at lambda_method985(Closure , Object )
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask
1 actionResultValueTask)at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Jellyfin.Server.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
at Jellyfin.Server.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
at Jellyfin.Server.Middleware.IpBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
at Jellyfin.Server.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Jellyfin.Server.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Jellyfin.Server.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
at Jellyfin.Server.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
at Jellyfin.Server.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
at Jellyfin.Server.Middleware.ExceptionMiddleware.Invoke(HttpContext context)