If a user can't edit a node despite having all the right permissions to edit that node, the problem may be that they don't have access to the Input Format (for example, "Filtered HTML", "Full HTML") assigned to that node (that is, the Input Format last used to edit the node).
This problem can arise in several ways:
- If the site's Input Format settings (Administer -> Site configuration -> Input formats) are changed so that the user's roles can no longer use the Input Format last used to edit the node.
- If the user's Roles settings (Administer -> User management -> Users) are changed so that the user no longer has any of the roles that may use the Input Format last used to edit the node.
- If another user with a different role edits the node using an Input Format which none of the first user's roles may use.
As a consequence, site administrators should be very careful about allowing different sets of input formats for different roles if all those roles are supposed to be able to edit the same content.
Note: When deleting an Input Format entirely, all nodes that were last edited with that Input Format are changed to the site's default Input Format, and all roles may use the default Input Format. So deleting Input Formats does not cause editing access problems.
Some technical aspects of this issue is explained in detail at http://exodusdev.com/drupal-user-loses-edit-access-to-own-content