You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CentOS运行的.NET Core控制台应用中创建777权限PDF文件

问题原因

Linux系统下.NET Core默认创建文件的权限受进程umask值限制,默认不会给所有用户读写权限,因此写入操作会触发UnauthorizedAccessException异常。

解决方案

方案1:代码直接指定文件权限(适用于.NET 5及以上版本)

.NET 5开始提供原生支持Unix权限设置的API,你可以修改FileStream构造函数,直接指定创建文件的权限为777:
首先引入命名空间:

using System.IO.Posix;

然后把你创建FileStream的代码替换成以下内容:

using (Stream outStream = new FileStream(
    item, 
    FileMode.Create, 
    FileAccess.ReadWrite, 
    FileShare.None, 
    4096, 
    FileOptions.None,
    (UnixFileMode)0o777 // 这里设置权限为777,若C#版本不支持0o前缀的八进制写法,可替换为十进制值511
))

方案2:调用系统chmod命令修改权限(适用于所有.NET Core版本)

如果你的项目是.NET Core 3.1及更低版本,没有原生权限API,可以在文件创建完成后调用系统命令修改权限:
在Parallel.ForEach内部,关闭Stream之后添加以下代码:

System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
{
    FileName = "/bin/chmod",
    Arguments = $"777 {item}",
    UseShellExecute = false,
    CreateNoWindow = true
}).WaitForExit();

注意事项

  • 首先确保程序运行的账号对Fichiers目录有读写执行权限,你可以先执行命令chmod 777 你的Fichiers目录绝对路径测试效果
  • 777权限允许所有用户对文件进行读写执行操作,生产环境建议根据实际需求调整为更安全的权限,比如755即可满足大部分场景的读写需求。

内容的提问来源于stack exchange,提问作者Jordan Suzanne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:24:07