PmWiki has built-in support for password-protecting various areas of the wiki site. Authors generally want to be able to apply passwords to individual pages or to wiki groups. Wiki Administrators can apply passwords to individual pages, to wiki groups, or to the entire site. As with any access control system, the password protection mechanisms described here are only a small part of overall system and wiki security.
As an author editing pages...
An author will generally set 3 types of passwords:
- to control who can see a page or group, use
- to control who can edit a page or group, use
- to control who can alter the passwords used to protect a page or group, use
To set a password on an individual wiki page, add
?action=attr to the page's URL (address) to access its attributes. Using the form on the attributes page, you can set or clear the
attr passwords on the page. In the form you enter the passwords as cleartext; PmWiki encrypts them for you automatically when it stores them.
- Leaving a field blank will leave the attribute unchanged.
- To remove a password from a page (reverting back to the group's or site's default), enter "clear".
- To indicate that the page can be edited even if a group or site password is set, enter "@nopass".
- To lock a page for everybody but the admin, enter "@lock".
- To assign the site's site-wide edit-password to the
attrpassword for the page, enter "@_site_edit".
To set a password on a wiki group is slightly more difficult -- you just set the passwords on a special page in each group called "GroupAttributes". First, you can get to the attributes page for GroupAttributes by entering a URL (address) like
http://www.example.com/pmwiki.php?n=GroupName.GroupAttributes?action=attr. Then, using the form on the attributes page, you can set or clear the
attr passwords for the entire group. In the form you enter the passwords as cleartext; PmWiki encrypts them for you automatically.
- To remove a password from a group (reverting back to the site's default), enter "clear".
- To indicate that the group can be edited even if a site password is set, enter "@nopass".
- To lock a group for everybody but the admin, enter "@lock".
Multiple passwords for a page, group or site are allowed. Simply enter multiple passwords separated by a space. This allows you to have a read password, a write password, and have the write password allow read/write access. In other words, if the read password is "alpha" and the edit password is beta, then enter
Set new read password: alpha beta Set new edit password: beta
This says that either "alpha" or "beta" can be used to read pages, but only "beta" may edit. Since PmWiki checks the passwords you've entered since the browser has been opened, entering a read password that is also a write password allows both reading and writing.
As an administrator ...
You can set passwords on pages and groups exactly as described above for authors. You can also:
- set site-wide passwords for pages and groups that do not have passwords
attrpasswords to control who is able to set passwords on pages
uploadpasswords to control access to the file upload capabilities (if uploads are enabled)
- use an
adminpassword to override the passwords set for any individual page or group
For more information on password options available to administrators, see PasswordsAdmin.
Which password wins?
In PmWiki, page passwords override group passwords, group passwords override the default passwords, and the
admin password overrides all passwords. This gives a great deal of flexibility in controlling access to wiki pages in PmWiki.
Opening access to pages in protected groups/sites
Sometimes we want to "unprotect" pages in a group or site that is otherwise protected. In these cases, the special password "@nopass" is used to indicate that access should be allowed to a page without requiring a password.
For example, suppose Main.GroupAttributes has an edit password set, thus restricting the editing of all pages in Main. Now we want Main.WikiSandbox to be editable without a password. Using "clear" for the edit password for Main.WikiSandbox doesn't unprotect the page, because the password is being set by the group. Instead, we set the edit password for Main.WikiSandbox to the special value "@nopass", which tells PmWiki to ignore any site-wide or group-level passwords for that page.
How can I password protect all the pages and groups on my site? Do I really have to set passwords page by page, or group by group?
Administrators can set passwords for the entire site by editing the config.php file; they don't have to set passwords for each page or group. For example, to set the entire site to be editable only by those who know an "edit" password, an administrator can add a line like the following to local/config.php:
$DefaultPasswords(:cell PQA(PSS('edit'):) = crypt('edit_password');
For more information about the password options that are available only to administrators, see PasswordsAdmin.
How can I create private groups for users, so that each user can edit pages in their group, but no one else (other than the admin) can?
Administrators can use the AuthUser recipe and add the following few lines to their local/config.php file to set this up:
This automatically gives edit rights to a group to every user who has the same user name as the group name.