Joomla1.6,1.7及2.5存取控制列表的概念簡介

這篇文章是基於原來針對Joomla1.6權限控制的二篇文章改寫而來的,這篇文章在2011年11月份撰寫,此時Joomla2.5尚未釋出,因此這篇文章假設,接下來的Joomla版本,存取控制列表的概念不會改變,操作介面也會一致。Joomla1.6及以後版本最具有震撼力的特色就是引入存取控制列表的概念及實作,存取控制列表(ACL)是英文字Access Controll Lists的首字母縮寫,根據存取控制列表,可以決定,誰具有讀取、編輯、刪除、登入網站等等的權限。

 

 

 

許多人認證存取控制列表只適用於網站前台,例如,當我從前台登入網站時,哪些資訊是我可以存取的,又例如,當某些人從前台登入時,他們可以看到哪些資訊,或是他們可以看到哪些不一樣的資訊?

 

但是存取控制列表也跟資訊內容的新增、修改及刪除有關;控制誰可以發佈或是停止發佈內容;控制誰可以從前台或是後台登入;控制誰可以更動元件、模組及樣板的設定。

 

有能力做並不代表一定要做,存取控制列表非常複雜,要花許多時間瞭解運作的原理,對於大部份的網站來說,並不需要更動Joomla預設的存取控制列表的設定,但是如果你要建構一個大型網站,存取控制列表就可以派上用場。

 

需要存取控制列表的案例包括:

*需要區隔家長、教師、學生及一般大眾存取內容的學校網站。

*信任機制無法在大型網站可靠運作,因為太多個性相異的人負責編輯網站內容。

*有些使用者只需要新增及編輯內容,但不需要有發佈的權限,或是你有二群使用者要針對網站上不同類別的文章,分別擁有新增及編輯內容的權限。

*希望使用者能夠從後台登入,但只能存取某些元件,而無法碰觸其他部份。

 

存取控制列表可以用來簡化網站後台的管理,隱藏使用者不需使用的區域,Joomla1.5可以讓使用者具有管理後台的權限,但無法限制使用者使用者能夠使用的功能,所以使用者可以編輯所有的後台功能,Joomla1.6以後的版本,藉著存取控制列表,可以進行更細微的權限調整,讓使用者只能使用後台管理介面的某些功能,加強使用的親和性。

 

Joomla1.5的存取控制列表

Joomla1.5的存取控制列表功能非常有限,如果用過Joomla1.5,你就曉得如何設定選單或網站內容可被哪些人瀏覽,Joomla1.5只有三個選項:public,registered users,或special,你可能知道registered users不能登入Joomla的後台,而super administrator可以,Joomla1.5的存取控制列表是階層性的,每個群組的權限繼承於原來所屬的群組。

 

完整的Joomla1.5的群組說明請參閱 brian.teeman.net網站,群組包含了public,registered users,author,editor,publisher,manager,administrator,super administrator。

 

Joomla1.5的存取層級包括public,registered及special,public表示所有人可以看的內容,registered表示此registered群組層級以上的使用者可以看到的內容,special表示author群組以上層級的使用者可以看到的內容,除此之外,就沒有其他可以更細微調整使用者瀏覽內容的區別機制。

 

Joomla1.6以後的存取控制列表概觀

Joomla1.6以後的版本,存取控制列表並不一定需要有階層性,你可以直接設定群組的權限,這些權限也可以繼承自所屬的群組,但是存取層級不具有繼承性,所有的群組必定繼承自public群組。

 

Joomla1.6以後版本的存取控制列表包含了使用者、群組、核心權限及存取層級四個組成單元,四者的關係如下圖,文章會再一一探究細節。

 

 

使用者

這是最容易了解的部份─可以是你自己或是任何瀏覽網站的某個人,使用者並不一定要在網站上擁有帳號,只要未登入站的的使用者都可視為public群組的使用者,核心權限無法直接指定給使用者,而是必須透過群組的指定方式。

 

核心權限

核心權限可以指定給群組,但沒辦法指定給使用者(如果要指定核心權限給單一使用者,就只能先建立使用者所屬的群組,再將核心權限指定給該群組)。

 

核心權限包括:

網站登入:登入網站前台

管理區登入:登入網站後台

離線存取:網站離線時(在全站設定 – 網站標籤),誰能登入站台。

超級管理員:超級管理員的權限包括更改全站設定、更改存取控制列表的所有網站設定權限。

存取管理區介面:後台存取的功能(包括選單、內容管理、媒體管理及元件等)

建立:建立內容。

刪除:刪除內容。

編輯:編輯所有內容(不一定是你建立的內容)。

編輯狀態:切換內容的狀態為發佈、不發佈、垃圾桶或是歸檔。

編輯擁有者:只能編輯自己建立的內容。

 

核心權限的設定路徑為網站 – 全站設定,再點選權限頁籤。

 

了解核心權限的設定  

除了public群組外,其餘群組,如上圖的manage會有三個設定選項:允許、禁止及繼承,public群組被所有群組繼承,public群組有三個設定選項:允許、禁止及未設定。    

*允許表示明確的設定群組有此權限。

*禁示表示群組無此權限。

*繼承表示繼承所屬群組的權限,public群組沒有這個設定選項。

*未設定表示權限未設定,只有public在全站設定裡頭有此設定選項。

 

底下會完整說明使用者群組的權限。

 

全站設定裡頭設定核心權限的注意事項

在全站設定裡設定核心權限,影響的範圍是整個網站,例如,author群組設定了建立權限,author就能在網站中的任何分類建立內容,包括在前台建立網站連結,你必須對於全站設定的核心權限更加深思熟慮,如果你想讓某些群組建立分類及內容,是不該在全站設定中設定核心權限,而該是內容的設定選項中進行,後續會對權限進行更深入的說明。

 

關於禁止

你可能為了便於理解,而明確設定禁止或允許的權限。

 

但是強烈建議不要這麼做。

 

如果設定禁止權限,禁止權限會被繼承,即使子群組設定了允許權限,父群組的禁止權限並不會被覆蓋,禁止權限沒辦法被子權組覆蓋。

 

例如,如果設定public群組所有的核心權限為禁止,那麼除了super users群組外,網站上的所有群組都沒辦法做任何事情,。

 

群組

群組是共享相同權限的使用者,以Joomla1.5為例,publisher 群組可能登入網站前台,建立、編輯、發佈或停足發佈內容,所有publisher群組都有相同權限。

 

不同於Joomla1.5,使用者可以隸屬於多個群組,例如可以同時是publisher及administrator群組。

 

你可以設定自己的群組,再接著設定群組的核心權限,有繼承關係的群組,核心權限也有繼承關係。

 

群組因為不同理由而被建立,可能是為了讓不同的使用群組瀏覽不同的網站內容,也可能是為了區隔不同群組管理網站的權限。

 

瀏覽網站時,此時的訪客就屬於public群組。

 

除了public群組外,其餘的都可以被刪除(不建議這麼做,因為這給了你權限繼承的概念)。

 

預設群組

Joomla1.6以後的版本跟Joomla1.5都有相同的預設群組,這些群組及核心權限如下(當閱讀時可以考慮哼唱The 12 Days of Christmas)。

 

Public: public群組可以瀏覽未隱藏的前台網站內容,核心權限預設都是未設定,表示沒有任何權限,所有的權限都是禁止的。

Registered: 只能登入網站前台,繼承自public群組。

Author: 能夠建立及編輯屬於自己的內容,繼承自registered群組。

Editor: 能夠編輯網站的任何內容,繼承自author群組。

Publisher: 能夠發佈、停止發佈、歸檔及刪除網站內容,繼承自editor群組。

Manager: 直接繼承public群組,所以不同於registered,author,editor及publisher群組的權限。

Administrator:能夠設定及編輯延伸套件,繼承manager群組。

Super Users: 能夠做任何事情。

 

預設群組跟權限的設定可以在全站設定裡看到(網站 ->全站設定->權限)。

 

存取層級

存取層級決定了哪些人可以在網站前台看到哪些內容,相當於前台網站的讀取權限。

 

依照傳承的歷史,有三個存取層級:public(所有人)、registered(登入的使用者)及special(登入後,author群組以上的使用者)。

 

存取層級並沒有繼承權限,如果一篇文章設定為custom的存取層級,那麼即使是super administrator也無法看到內容,你必須將super administrator也設定為custom存取層級或設定為能夠瀏覽內容的群組(super administrator可以在網站後台編輯任何內容)。

 

下一步

將撰寫文章介紹這些原理的實際應用,實際的例子包括:

*前台網站的不同使用者可以看到不同的內容。

*簡化後台管理介面。

 

翻譯資料來源:

http://magazine.joomla.org/issues/Issue-Jan-2012/item/637-Joomla-1-6,-1-7,-and-2-5-ACL-Concepts-Overview

分類:Joomla