PmWiki 內建即有支援幾種密碼管理的功能,可控管的範圍從單一頁面、wiki 群組,或是整個 wiki 網站。
以下即是 PmWiki 支援的幾種不同層級的密碼管理:
read
密碼可以設定頁面是否能被閱讀
edit
密碼可以設定編輯頁面的權限
attr
密碼則能管理誰能替頁面設定密碼(以及未來一些進階功能)
如果有開放上傳檔案的功能,upload
密碼用來管理上傳檔案以及允許的檔案類型
最後, 有一個最上層的
admin
管理員密碼,可以管理任何單一頁面以及群組的密碼。
所有密碼都可以選擇採用加密方式儲存,避免密碼洩漏或不經意地被看到。
預設值
- PmWiki 預設是沒有設定
read
和 edit
密碼(對整個網站,也就是允許任何人瀏覽與修改頁面)
attr
密碼則鎖定在 Main 以及 PmWiki 群組
admin
密碼則是全面被鎖定的
對整個網站的密碼管控是由
config.php 檔案中的 $DefaultPasswords 陣列來設定。要設定最高管理員密碼為 "
mysecret
",請在
config.php 中增加一行:
$DefaultPasswords['admin'] = crypt('mysecret');
當然,任何人都有可以看到
config.php 的內容,也就看到了密碼,所以應該替密碼
編碼,在任何 PmWiki URL 的結尾處加上
?action=crypt
或是
&action=crypt
,也可以直接點選
ThisWiki:?action=crypt ,就會被導引到 PmWiki 提供的編碼頁面,輸入要使用的密碼,按下「送出」,就會得到一串看不懂的文字(其實就是你的密碼)。例如當你輸入 "
mysecret
",回覆給你的文字像是這樣:
$1$hMMhCdfT$mZSCh.BJOidMRn4SOUUSi1
(不同的主機上可能會有不同的結果)
拷貝這段文字,貼到你的
config.php 檔案裡:
$DefaultPasswords['admin'] = '$1$hMMhCdfT$mZSCh.BJOidMRn4SOUUSi1';
(記得不要再用
crypt('...')
這個函數了)要注意編碼後的文字前後是被單引號包圍的。
其實當詢問密碼時,你要輸入的還是 "
mysecret
",只是當有人看到
config.php 檔案內容時,看到的是一串奇怪的文字,而無法得知真正的密碼。(相同的密碼經過編碼程序,每次獲得的字串可能都不相同,預設機制就是為了讓人更難去推算真正的密碼)
相同的程序,你可以透過設定
$DefaultPasswords['read']
、
$DefaultPasswords['edit']
、和
$DefaultPasswords['attr']
來管理預設的
read
、
edit
及
attr
密碼。
在 PmWiki 網站中,是依照這個順序:「頁面密碼 > 群組密碼 > 預設整站密碼」來適用密碼的,而使用管理員 admin 密碼則能夠進入、編輯、管理任何頁面(最高權力),所以可以透過這樣的機制來組織你的 PmWiki 網站。
你也可以設定某些頁面為 "nopass" 的密碼(由 $AllowPassword 變數來定義),即使這些頁面屬於有設定群組密碼的頁面,或是替整個網站設定密碼,但是開放某些群組頁面可供自由編輯。
想要知道怎麼替單一頁面或是群組頁面設定密碼嗎?請閱讀
Passwords 。