C#从Visual Studio处理UNIX权限的最佳方法
嘿,我只想为我正在开发的一个项目设置unix套接字的权限,我找不到“好”的方法,我写了这个小名称空间,它似乎相当有效,所以我决定在这里发布,看看大家怎么想,如果有什么我可以改进的地方 也适用于公共场所,如果有其他人正在寻找解决方案:) 您可以使用此解决方案设置unix文件系统中文件的权限,如下所示:C#从Visual Studio处理UNIX权限的最佳方法,c#,unix,permissions,unix-socket,C#,Unix,Permissions,Unix Socket,嘿,我只想为我正在开发的一个项目设置unix套接字的权限,我找不到“好”的方法,我写了这个小名称空间,它似乎相当有效,所以我决定在这里发布,看看大家怎么想,如果有什么我可以改进的地方 也适用于公共场所,如果有其他人正在寻找解决方案:) 您可以使用此解决方案设置unix文件系统中文件的权限,如下所示: UnixFileInfo UnixFilePermission = new Mono.Unix.UnixFileInfo(@"/somepath"); UnixFilePermission.File
UnixFileInfo UnixFilePermission = new Mono.Unix.UnixFileInfo(@"/somepath");
UnixFilePermission.FileAccessPermissions = new PermGrid().ConvertPerm(644);
这是名称空间本身
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.ToString());
}
public FileAccessPermissions ConvertPerm(String UnixPerm)
{
Int16 PermissionSegment = 0;
Int16[] PermissionSegmentGroup = new Int16[3] { 0, 0, 0 };
foreach (Char PermInt in UnixPerm)
{
PermissionSegmentGroup[PermissionSegment] = Convert.ToInt16(PermInt.ToString());
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;
}
}
}
Unix使用两个字节,而您使用的是24个字节。啊,是的,它确实看起来相当有效,但是,我必须仔细看看这是否完全有效?你有没有找到在C#中为UNIX设置权限的其他方法?顺便说一句,干得好