DokuWiki

It's better when it's simple

Uživatelské nástroje

Nástroje pro tento web


cs:acl

Přístupová Práva

DokuWiki – jako většina Wikií – je v základu velmi otevřená. Kdokoliv může vytvářet, editovat a mazat stránky. Avšak někdy má význam omezit přístup na některé nebo všechny stránky. A tady vstupuje do hry Access Control Lists (seznam přístupových práv) (ACL). Tato stránka Ti může dát přehled jak ACL pracuje v DokuWiki a jak se tento seznam konfiguruje.

Pro více informací nebo položení dotazu jdi na –> discussion:acl

:!: POZOR: DokuWikí ACL byla implementována před časem a měla by být stabilní. Ale, pokud máš ve wiki opravdu citlivá data, neměl bys počítač zpřístupnovat přes internet…

Configurace

Na zapnutí ACL v DokuWiki, potřebuješ alespon jedno defaultní pravidlo. Jednoduše zkopíruj příklady conf/acl.auth.php.dist a conf/users.auth.php.dist do souboru conf/acl.auth.php a conf/users.auth.php a přihlašovací stránka je aktivní. Pokud vybereš „No ACL setup yet! Denying access to everyone.“ 1) tak se ujisti že text na začátku souboru acl.auth.php čte acl.auth.php a ne users.auth.php.

Potřebuješ také nastavit nějaké konfigurační volby. Podívejme se jak jednoduše můžeš přidáním do svého local.php povolit textové (nekryptované) ověřování s možností veřejné registrace:

  $conf['useacl']       = 1;        // Toto povolí ACL
  $conf['superuser']    = '@admin'; // členové skupiny admin jsou superuživatelé

useacl povolí ACL. Jakmile je funkce puštěna, objeví se na konci každé wiki stránky přihlašovací tlačítko, a uživatel se může sám zaregistrovat. Volba superuser určuje kdo je v DokuWiki oprávněný k čemukoliv (včetně přidávání uživatelů) - tento může být buďto jednotlivý uživatel nebo skupina (označená uvozujícím @). Když instaluješ dokuwiki s ACL narychlo, použij browser, klikni na tlačítko „Login“, následně odkaz „register“ a registruj alespon jednoho uživatele. (Pokud nevidíš odkaz „registr“, tak práva souboru conf/users.auth.php nebo conf/acl.auth.php jsou špatně nastavena a nemohou být do nich zaplsána žádná nová data.) Pak uprav conf/users.auth.php a povyš alespon jednoho „uživatele“ na „admin“. Takovému uživateli pak po nalogovaní přibyde tlačítko „Admin“.

V tomto bodě může být zvýšena bezpečnost. Pro potlačení samostatné registrace přidej hodnotu 'register' do volby 'disableactions':

  $conf['disableactions'] = 'register';        // uživatelé se nemohou nadále sami registrovat

Po staru byla volba openregister kterou bylo potřeba vypnout (disable).

Pokud je toto chování žádoucí, můžou být uživatelé přidáni pouze adminem (buď pomocí administračního webového rozhraní nebo přímo editací souboru conf/users.auth.php).

Přibyly nějaké configurační volby které umožnují ovládát dlaší vlastnosti ACL, ale většina shledá výchozí nastavení uspokojivým.

$conf['autopasswd']  = 1;                //automaticke generovani a zaslání hesla mailem.
$conf['passcrypt']   = 'smd5';           //Použít šifrovací metodu (smd5,md5,sha1,ssha,crypt,mysql,my411)
$conf['defaultgroup']= 'user';           //Nový uživatelé jsou přidáni do této skupiny
$conf['profileconfirm'] = '1';           //Vyžaduje současné heslo pro potvrzení uživatelského profilu
$conf['authtype']     = 'plain';         // prostředí v čistém textu (výchozí)
  • Změna autopasswd na 0 umožní uživatelům zadat vlastní heslo při registraci. To má vedlejší efekt, není zaručeno, že uživatel vyplnil platnou mailovou adresu.
  • passcrypt určuje metodu šifrování pro ukládání hesla.
  • defaultgroup znamená pochopitelně: všichni nový uživatelé budou přidáni do teto skupiny.
  • Nastavením profileconfirm na 0 povolí přihlášeným uživatelům zmenit jejich nastaveni (plné jméno, heslo a mail) bez potvrzení stávajícím heslem.
  • DokuWiki může použít různé cesty pro přístup uživatelů a skupin. Poku není určeno jinak, použije vlastní plaintext 'backend'. 'Backend' je volba nastavení authtype. Podívej se na backends, a uvidíš jaké volby jsou dostupné.

….

Správa uživatelských účtů

Uživatelé mohou být přidáni, odebráni a upraveni pomocí usermanager. Pro informaci jak přidávat uživatele ručně se podívej do poznámek v dokumentaci plain backend. Standardně se také mohou uživatelé registrovat sami.

Podívej se také na: FAQ: Jak zakázat volnou registraci uživatelů

Omezení Přístupu

Omezení přístupu může být vázáno na stránky nebo jmené prostory. Máme pět práv: read, edit, create, upload a delete (čtení, úpravu, vytvoření, přiložení souboru a mazání). Každé vyšší oprávnění obsahuje všechna nižší, kde čtení je nejníže a mazání naopak nejvýše. Měl bys mít na paměti že vytoření, upload a mazání může být přiděleno pouze jmenému prostoru.

Když DokuWiki kontroluje která práva má dát uživateli, porovná všechna pravidla daného uživatele a všech jeho skupin. Pravidlo které dává nejvyšší oprávnění je aplikovano. Oprávnění jsou kontrolována nejprve pro danou stránku a pokud ta není definovana, tak pro nadřazený jmený prostor dokud není nalezeno pravidlo (od nejkonkrétnějěího k nejobecnějšímu).

Pro přidání omezujících pravidel, jdi na stránku, kterou si přeješ nastavit, a vstup do administrátorského prostředí (tlačítkem Admin či Správa na spodní liště - dostupné pouze superuživateli). Zde vyber Access Control List Management (Správa přístupových práv). Tím se dostaneš na tabulku jako je tato, ukazující všechna související omezení pro tuto stránku.

Příklad ACL

Omezení jsou přidávána na začátek tabulky. Potřebuješ vybrat rozsah, který může být buď aktuální stránka, nebo jeden z nadřazených jmených prostorů 2). Také musíš vybrat komu chceš přidat (nebo odebrat) přístup; to může být buď skupina nebo uživatel. A konečně, musíš vybrat požadovaná oprávnění. Nenastavení žádných práv uzamkne určeného uživatele nebo skupinu pro danou stránku či jmený prostor..

Poznámka: Práva mazání postihuje jen oblast souboru. Stránky mohou být smazány či obnoveny (jejich obsah) kýmkoliv kdo má alespoň právo editace. Někdo kdo má právo nahrát soubor, ale nemá práva k mazání, nemůže přepsat již existující soubor.

Speciální Skupiny

ALL. Všichni, včetně nepřihlášených uživatelů, jsou členy skupiny ALL. Můžeš použít tuto skupinu na omezení všech uživatelů (jako je to ve výchozím nastavení) a pak v klidu přidávat práva pro jednotlivé uživatele. Například, výše uvedený screenshot nemůže nikdo, kromě členů skupiny upload, uploudnout.

user. Všichni registrovaní uživatelé jsou automaticky členy skupiny 'user'. Použij tuto skupinu na přidělení práv všem přihlášeným uživatelům. Jméno této skupiny se nastavuje pomocí volby defaultgroup. Na rozdíl od virtuálního „ALL“, je skupina „user“ skutečná do které jsou všichni uživatelé přidáni automaticky, pokud byla použita původní autorizační konfigurace. Pokud použiješ jinou konfiguraci, musíš použít takovou skupinu, kterou jsi si nastavil volbou defaultgroup.

Zákulisní Informace

Přístupová práva jsou uložena v souboru conf/acl.auth.php, ke kterému musí mít zápisová práva webserver, pokud chceš použít webové administrační prostředí. :!: Nedoporučuje se měnit záznamy ručně. Raději použij webové prostředí.

Prázdné řádky a shellovské komentáře jsou ignorované. Každá řádka obsahuje tři pole vzájemně oddělená bílými znaky:

  • Co má být omezeno. To může být buď stránka nebo jmený prostor. Jmený prostor je patrný podle přidáné hvězdičky (jak je vidět na příkladu níže)
  • Skupina nebo uživatelské jméno. Skupině predchází znak @
  • Uroven oprávnění (viz. níže)

Máme sedm úrovní oprávnění vyjádřených číslem (typu integer). Vysoká úroven obsahuje i nižší prvky. Zkrátka pokud můžeš upravovat stráknu, tak jí můžeš i číst. Jinak admin s právy 255 by nikdy neměl být v souboru conf/acl.auth.php. Ten je použit jen interně v porovnání s volbou superuser.

Jméno Uroven použitelné na Práva DokuWikí konstanta
none 0 stánky, jm. prostor žádná práva – zcela uzamčeno AUTH_NONE
read 1 stánky, jm. prostor právo pro čtení AUTH_READ
edit 2 stánky, jm. prostor existující stránky je možné upravit AUTH_EDIT
create 4 jm. prostor Stránka může být vytvořena AUTH_CREATE
upload 8 jm. prostor soubory mohou být uploaduty AUTH_UPLOAD
delete 16 jm. prostor soubory mohou být přepsány nebo smazány AUTH_DELETE
admin 255 adminí pluginy superuser3) může měnit nastavení AUTH_ADMIN

Tady je příklad:

*                     @ALL        4
*                     bigboss    16
start                 @ALL        1
marketing:*           @marketing  8
devel:*               @ALL        0
devel:*               @devel      8
devel:*               bigboss    16
devel:funstuff        bigboss     0
devel:*               @marketing  1
devel:marketing       @marketing  2

Pojďme si příklad přiblížit řádku po řádce:

  1. Toto nastavuje pro hlavní jmený prostor. Povoluje všem upravovat a vytvářet stránky. Ovšem upload není povolen.
  2. Uživatel bigboss dostal všechna práva.
  3. Uvodní stránka byla pro všechny omezena pouze pro čtení.
  4. Potom jsou nastavena práva pro jmený prostor marketing. Všichni členové skupiny marketing sem mají povolen upload - ostatní uživatelé projdou prvním pravidlem, takže mohou stále vytvářet a upravovat. bigboss zdědil svá práva z druhého řádku, takže může nahrávat i mazat soubory.
  5. Teď tu máme přístup do jmeného prostoru devel. Je omezen a nikdo nemá žádná práva.
  6. Jistě že ne nikdo – dáme sem plná práva členům skupiny devel.
  7. A pochopitelně bigboss je také povolen – a zároven je jediný kdo může mazat a přepisovat přílohy.
  8. Ovšem chlapci z vývoje (devel) nechtějí aby jejich šéf (boss) viděl zábavnou stránku (funstuff) – vzpomeň že konktétní je nadřazeno obecnému.
  9. A marketing může číst všechno ve jmeném prostoru devel.
  10. A konečně marketing má také povoleno upravovat stránku devel:marketing.

Pamatuj prosím, že v souboru na pořadí nezáleží. Soubor je brán celý, Takže se hledá dokonalá kombinace shody mezi stránkou a uživatelem. Když je nalezena shoda tak je další hledání ukončeno. Pokud nebude nalezena shoda, skupina práv pro aktuální stránku je dál kontrolována. Pokud nebude nalezena shoda do konce souboru, tak kontrola pokračuje na dalším vyšším jmeném prostoru.

To můžeš vidět v předchozím příkladu na právech pro uživatele bigboss. On dostal plná práva na druhém řádku, ale potřebuje znova dostat plný přístup pro jmený prostor devel:* (jak je vidno na 7. řádku). Pokud tento řádek vynecháme, bude první shodné pravidlo, pro uživatele bigboss, na řádku číslo 5, protože bigboss je členem magické skupiny ALL.

Poznámka: Pro konfiguraci uživatelů či skupin se specialními znaky (jako například mezerou), musíš tyto znaky zamaskovat jako v URL adrese (%20 - mezera). Takto lze maskovat jen v maximálním rozsahu 128 bytů. ACL soubor používá UTF-8 kodování, takže jakékoliv více-bytové znaky mohou být zapsány. Toho lze využít pouze když je prostředí jiné než původní – původní prostředí speciální znaky rozhodně nepodporuje.

1)
Nenastavuj ACL! odepři přístup všem
2)
jenvrchnější jmený prostor nese název *
cs/acl.txt · Poslední úprava: 2013-11-27 09:33 autor: 88.146.48.65

Kromě míst, kde je explicitně uvedeno jinak, je obsah této wiki licencován pod následující licencí: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki