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?.
An author will generally use 3 types of passwords:
To set a password on an individual wiki page, add
?action=attr to the page's URL (address) to access its attributes. Using the small 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.
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?n=GroupName.GroupAttributes?action=attr. Then, using the small 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.
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.
You can set passwords on pages and groups exactly as described above for authors. You can also:
attrpasswords to control who is able to set passwords on pages
uploadpasswords to control access to the file upload capabilities (if uploads are enabled)
adminpassword to override the passwords set for any individual page or group
For more information on password options available to administrators, see PasswordsAdmin.
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.
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.
Administrators need to carefully plan where passwords are applied to avoid opening inadvertent security holes. If your wiki is open (anyone can read and edit), this would not seem to be a concern, except, a malicious or confused user could apply a read password to a group and make the group completely unavailable to all other users. At the very least, even an open wiki should have a site-wide »admin« password and a site-wide »attr« password set in config.php. The sample-config.php file distributed with PmWiki indicates that the PmWiki and Main groups have »attr« locked by default, but if anyone creates a new group, »attr« is unlocked. Administrators must remember to set »attr« passwords for each new group (if desired) in this case. An easier solution is to include these lines in config.php :
$DefaultPasswords['admin'] = crypt('youradminpassword'); $DefaultPasswords['attr'] = crypt('yourattrpassword');
This sets your »admin« and »attr« passwords and ensures that any new group will have this »attr« password automatically applied to it.