Page is not editable due to page restrictions

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Problem

Visiting the edit page URL manually with following URL:

http://<confluence-URL>/pages/editpage.action?pageId=PAGE_ID

Yields a "Not Permitted" page with "You are not permitted to perform this operation".

The page is not editable by anyone, including Confluence administrators. When viewing a Page's Restrictions, there may or may not be a restriction set for the page. The "Edit" menu is not visible anywhere on the page.

A flush of Confluence caches does not help.

Cause

There are no known problems with page restrictions, but it can be confusing to track them down.

Resolution

A space administrator can remove restrictions by visiting a combination of Browse >> Space Admin >> Permissions and Browse >> Space Admin >> Restricted Pages.

Note that Page Restrictions are inherited. Make sure to check for restrictions on parent pages as well.

Alternate Resolution

Always back up your data before making any database modifications. If possible, test any alter, insert, update, or delete SQL commands on a staging server first.

The information on page restrictions is stored in two tables, content_perm andcontent_perm_set. The first table stores content-level permissions objects, while the latter stores one-to-many mapping for content items and their permissions, with added metadata. For more information, please refer Confluence Data Model.

In this case, the content_perm_set table holds the mapping, however, the corresponding reference to the content_perm is missing. To find out more about this, identify the ID of the page:

1 2 3 SELECT * FROM content_perm WHERE cps_id in (SELECT id FROM content_perm_set WHERE content_id in (SELECT contentid FROM content WHERE title= '<PAGE_TITLE>' ORDER BY version DESC LIMIT 1));

Remove the row returned by the query:

1 2 3 DELETE FROM content_perm_set WHERE content_id in (SELECT ID FROM content_perm WHERE cps_id in (SELECT id FROM content_perm_set WHERE content_id in (SELECT contentid FROM content WHERE title= '<PAGE_TITLE>' ORDER BY version DESC LIMIT 1)));

⚠️ The nested select statements are provided for clarity. Run each separately to understand more about the database structure.

Updated on April 8, 2025

Still need help?

The Atlassian Community is here for you.