C # Le meilleur moyen de gérer les permissions UNIX à partir de Visual Studio

Hey tout ce que je voulais être en mesure de définir des permissions sur des sockets Unix pour un projet que je développe, je pourrais trouver aucune façon «sympa» de faire ce petit espace de nom, il semble assez efficace donc j’ai décidé de poster Ce que tout le monde sait et si je peux améliorer quelque chose.

Aussi pour un lieu public si quelqu’un d’autre cherche quelque chose à faire 🙂

Vous pouvez utiliser cette solution pour définir des permissions sur des fichiers dans un système de fichiers Unix comme suit:

UnixFileInfo UnixFilePermission = new Mono.Unix.UnixFileInfo(@"/somepath"); UnixFilePermission.FileAccessPermissions = new PermGrid().ConvertPerm(644); 

Et voici l’espace de nom lui-même

 using System; using Mono.Unix; using UnixTools; namespace UnixTools { public class PermGrid { private static readonly FileAccessPermissions[,] PermissionGrid = new FileAccessPermissions[3, 8] { { 0x00, FileAccessPermissions.UserExecute, FileAccessPermissions.UserRead, FileAccessPermissions.UserExecute | FileAccessPermissions.UserRead, FileAccessPermissions.UserWrite, FileAccessPermissions.UserWrite | FileAccessPermissions.UserExecute, FileAccessPermissions.UserWrite | FileAccessPermissions.UserRead, FileAccessPermissions.UserReadWriteExecute }, { 0x00, FileAccessPermissions.GroupExecute, FileAccessPermissions.GroupRead, FileAccessPermissions.GroupExecute | FileAccessPermissions.GroupRead, FileAccessPermissions.GroupWrite, FileAccessPermissions.GroupWrite | FileAccessPermissions.GroupExecute, FileAccessPermissions.GroupWrite | FileAccessPermissions.GroupRead, FileAccessPermissions.GroupReadWriteExecute }, { 0x00, FileAccessPermissions.OtherExecute, FileAccessPermissions.OtherRead, FileAccessPermissions.OtherExecute | FileAccessPermissions.OtherRead, FileAccessPermissions.OtherWrite, FileAccessPermissions.OtherWrite | FileAccessPermissions.OtherExecute, FileAccessPermissions.OtherWrite | FileAccessPermissions.OtherRead, FileAccessPermissions.OtherReadWriteExecute }, }; public FileAccessPermissions ConvertPerm(int UnixPerm) { return ConvertPerm(UnixPerm.ToSsortingng()); } public FileAccessPermissions ConvertPerm(Ssortingng UnixPerm) { Int16 PermissionSegment = 0; Int16[] PermissionSegmentGroup = new Int16[3] { 0, 0, 0 }; foreach (Char PermInt in UnixPerm) { PermissionSegmentGroup[PermissionSegment] = Convert.ToInt16(PermInt.ToSsortingng()); PermissionSegment++; } return ConvertPerm(PermissionSegmentGroup); } public FileAccessPermissions ConvertPerm(Int16[] UnixPerm) { FileAccessPermissions PermStore = new FileAccessPermissions(); PermStore = PermissionGrid[0, UnixPerm[0]] | PermissionGrid[1, UnixPerm[1]] | PermissionGrid[2, UnixPerm[2]]; return PermStore; } } }