一、使用Mono.Posix 包实现
var unixFileInfo = new Mono.Unix.UnixFileInfo("test.txt"); // set file permission to 644 unixFileInfo.FileAccessPermissions = FileAccessPermissions.UserRead | FileAccessPermissions.UserWrite | FileAccessPermissions.GroupRead | FileAccessPermissions.OtherRead;
二、使用本地代码
using System; using System.IO; using System.Runtime.InteropServices; using static System.Console; class Program { [DllImport("libc", SetLastError = true)] private static extern int chmod(string pathname, int mode); // user permissions const int S_IRUSR = 0x100; const int S_IWUSR = 0x80; const int S_IXUSR = 0x40; // group permission const int S_IRGRP = 0x20; const int S_IWGRP = 0x10; const int S_IXGRP = 0x8; // other permissions const int S_IROTH = 0x4; const int S_IWOTH = 0x2; const int S_IXOTH = 0x1; static void Main(string[] args) { WriteLine("Setting permissions to 0755 on test.sh"); const int _0755 = S_IRUSR | S_IXUSR | S_IWUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH; WriteLine("Result = " + chmod(Path.GetFullPath("test.sh"), (int)_0755)); WriteLine("Setting permissions to 0644 on sample.txt"); const int _0644 = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH; WriteLine("Result = " + chmod(Path.GetFullPath("sample.txt"), _0644)); WriteLine("Setting permissions to 0600 on secret.txt"); const int _0600 = S_IRUSR | S_IWUSR; WriteLine("Result = " + chmod(Path.GetFullPath("secret.txt"), _0600)); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结