我目前正在尝试在 Amazon Linux 2 EC2 实例上运行 .NET 5.0 ASP.NET 应用程序。
这是由 nginx 托管的,在部署时自动使用 supervisord 运行。这是我在部署后第一次运行它,并从这个应用程序的主管 stderr 中发现了这个错误堆栈跟踪。
System.UnauthorizedAccessException: Access to the path '/root/.dotnet' is denied.
---> System.IO.IOException: Permission denied
--- End of inner exception stack trace ---
at System.IO.FileSystem.CreateDirectory(String fullPath)
at System.IO.Directory.CreateDirectory(String path)
at Microsoft.Extensions.EnvironmentAbstractions.DirectoryWrapper.CreateDirectory(String path)
at Microsoft.DotNet.Configurer.FileSystemExtensions.<>c__DisplayClass0_0.<CreateIfNotExists>b__0()
at Microsoft.DotNet.Cli.Utils.FileAccessRetrier.RetryOnIOException(Action action)
at Microsoft.DotNet.Configurer.FileSystemExtensions.CreateIfNotExists(IFileSystem fileSystem, String filePath)
at Microsoft.DotNet.Configurer.FileSentinel.Create()
at Microsoft.DotNet.Configurer.DotnetFirstTimeUseConfigurer.Configure()
at Microsoft.DotNet.Cli.Program.ConfigureDotNetForFirstTimeUse(IFirstTimeUseNoticeSentinel firstTimeUseNoticeSentinel, IAspNetCertificateSentinel aspNetCertificateSentinel, IFileSentinel toolPathSentinel, Boolean isDotnetBeingInvokedFromNativeInstaller, DotnetFirstRunConfiguration dotnetFirstRunConfiguration, IEnvironmentProvider environmentProvider, Dictionary`2 performanceMeasurements)
at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, TimeSpan startupTime, ITelemetry telemetryClient)
at Microsoft.DotNet.Cli.Program.Main(String[] args)
我很好奇为什么这是针对 root 来创建目录并授予 root 解决方案的权限,或者是别的什么吗?从我的搜索来看,这似乎没有发生在其他任何人身上。我只是非常谨慎地公开授予根文件夹的开放权限,如果这甚至是这里的解决方案的话。
作为参考,这是我设置的教程:https ://docs.servicestack.net/deploy-netcore-to-amazon-linux-2-ami#