Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#从Visual Studio处理UNIX权限的最佳方法_C#_Unix_Permissions_Unix Socket - Fatal编程技术网

C#从Visual Studio处理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

嘿,我只想为我正在开发的一个项目设置unix套接字的权限,我找不到“好”的方法,我写了这个小名称空间,它似乎相当有效,所以我决定在这里发布,看看大家怎么想,如果有什么我可以改进的地方

也适用于公共场所,如果有其他人正在寻找解决方案:)

您可以使用此解决方案设置unix文件系统中文件的权限,如下所示:

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设置权限的其他方法?顺便说一句,干得好