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); }
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); } }
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); }