コード例 #1
0
        public static bool CheckPathAccessModes(FileAccessPermissions permissions, AccessModes request)
        {
            if (request.HasFlag(AccessModes.R_OK))
            {
                if (!(permissions.HasFlag(FileAccessPermissions.UserRead) || permissions.HasFlag(FileAccessPermissions.GroupRead) || permissions.HasFlag(FileAccessPermissions.OtherRead)))
                {
                    return(false);
                }
            }

            if (request.HasFlag(AccessModes.W_OK))
            {
                if (!(permissions.HasFlag(FileAccessPermissions.UserWrite) || permissions.HasFlag(FileAccessPermissions.GroupWrite) || permissions.HasFlag(FileAccessPermissions.OtherWrite)))
                {
                    return(false);
                }
            }

            // ReSharper disable once InvertIf
            if (request.HasFlag(AccessModes.X_OK))
            {
                if (!(permissions.HasFlag(FileAccessPermissions.UserExecute) || permissions.HasFlag(FileAccessPermissions.GroupExecute) || permissions.HasFlag(FileAccessPermissions.OtherExecute)))
                {
                    return(false);
                }
            }
            return(true);
        }
コード例 #2
0
 public override bool SetExecutable(string path, bool exec)
 {
     try {
         UnixFileInfo          fi    = new UnixFileInfo(path);
         FileAccessPermissions perms = fi.FileAccessPermissions;
         if (exec)
         {
             if (perms.HasFlag(FileAccessPermissions.UserRead))
             {
                 perms |= FileAccessPermissions.UserExecute;
             }
             if (perms.HasFlag(FileAccessPermissions.OtherRead))
             {
                 perms |= FileAccessPermissions.OtherExecute;
             }
             if ((perms.HasFlag(FileAccessPermissions.GroupRead)))
             {
                 perms |= FileAccessPermissions.GroupExecute;
             }
         }
         else
         {
             if (perms.HasFlag(FileAccessPermissions.UserRead))
             {
                 perms &= ~FileAccessPermissions.UserExecute;
             }
             if (perms.HasFlag(FileAccessPermissions.OtherRead))
             {
                 perms &= ~FileAccessPermissions.OtherExecute;
             }
             if ((perms.HasFlag(FileAccessPermissions.GroupRead)))
             {
                 perms &= ~FileAccessPermissions.GroupExecute;
             }
         }
         fi.FileAccessPermissions = perms;
         return(true);
     } catch (Exception ex) {
         Log.Warning(ex);
         return(false);
     }
 }
コード例 #3
0
        public override bool SetExecutable(FilePath path, bool exec)
        {
            UnixFileInfo          fi    = new UnixFileInfo(path);
            FileAccessPermissions perms = fi.FileAccessPermissions;

            if (exec)
            {
                if (perms.HasFlag(FileAccessPermissions.UserRead))
                {
                    perms |= FileAccessPermissions.UserExecute;
                }
                if (perms.HasFlag(FileAccessPermissions.OtherRead))
                {
                    perms |= FileAccessPermissions.OtherExecute;
                }
                if ((perms.HasFlag(FileAccessPermissions.GroupRead)))
                {
                    perms |= FileAccessPermissions.GroupExecute;
                }
            }
            else
            {
                if (perms.HasFlag(FileAccessPermissions.UserRead))
                {
                    perms &= ~FileAccessPermissions.UserExecute;
                }
                if (perms.HasFlag(FileAccessPermissions.OtherRead))
                {
                    perms &= ~FileAccessPermissions.OtherExecute;
                }
                if ((perms.HasFlag(FileAccessPermissions.GroupRead)))
                {
                    perms &= ~FileAccessPermissions.GroupExecute;
                }
            }
            fi.FileAccessPermissions = perms;
            return(true);
        }