(toiminnot)

hwechtla-tl: Anarkistinen käyttöoikeudenhallinta

Kierre.png

Mikä on WikiWiki?
nettipäiväkirja
koko wiki (etsi)
viime muutokset


Ongelma on tämä: miten käyttäjät voisivat Unixissa antaa käyttöoikeuden haluamiinssa tiedostoihin haluamalleen ihmisjoukolle niin, että:

  1. ylläpitäjien ei tarvitse puuttua asiaan
  2. ryhmäoikeuksilla on määritelty elinkaari eli vanhoja ryhmiä saadaan joskus siivotuksi
  3. ongelmatilanteissa tiedetään, kenen kanssa asiaa pitää selvitellä?

Unixissa on sellainen hyvä valinta, että aina, jos haluaa määrittää käyttöoikeuksia jollekulle muulle kuin tiedoston tekijälle muttei kuitenkaan kaikille, on perustettava ryhmä, joka määrittää kyseisen ihmisjoukon. Tämä on kätevää, koska myöhemmin tämän ryhmän kautta voi päivittää, ketkä saavat roolipohjaisen käyttöoikeuden tiettyihin tiedostoihin, ilman että itse tiedostoja tarvitsee käydä läpi.

Ongelma on kuitenkin se, että ryhmiä ei pysty luomaan eikä muokkaamaan kukaan muu kuin järjestelmän ylläpitäjä. Tarvitaan siis automaatti, jolla /etc/group luodaan, jotta käyttäjät voivat itse huolehtia ylläpidosta.

Tällöin ilmeinen ratkaisu on, että kukin voi perustaa uusia ryhmiä, ottaa niihin jäseniä ja luovuttaa ryhmän ylläpito-oikeuksia eteenpäin. Ryhmä vanhenee, kun kaikki sen jäsenet ovat vanhentuneet. Ongelmatilanteissa otetaan yhteys ryhmän ylläpitäjiin. Tämä on hyvin perinteinen tapa: jokainen porras määrittää tarkalleen, mitä oikeuksia jakaa eteenpäin. Mutta:

  1. mitä tehdään ryhmille, joiden ylläpitäjät ovat vanhentuneet? Muut saattavat edelleen käyttää ryhmää!
  2. mitä tehdään, kun ylläpitäjään ei muuten vain saa yhteyttä? Kuka esim. lisää uudet jäsenet? (Olin oikeasti nähnyt tilanteita, joissa käyttäjät kopioivat toisilleen ryhmän tiedostoja, koska liittymisprosessi ei ollut selvillä.)
  3. mitä tehdään, kun kenellekään ei ole enää selvää, mitä ryhmällä oli tarkoitus tehdä, mutta sitä ei uskalleta poistaakaan?

Näiden huolten vuoksi tein mallin, joka tekee mahdollisimman helpoksi roolivaihdokset. Ryhmällä ei ole ylläpitäjää, vaan vastuuhenkilö. Ryhmä vanhenee heti, kun vastuuhenkilö vanhenee (tästä tietysti varoitetaan ryhmän jäseniä). Vastuuhenkilöksi saa ryhtyä kuka vain ryhmän jäsen, mutta vastuuhenkilöydestä pääsee eroon vain, jos joku muu ottaa sen. Jäseniä pystyy lisäämään kuka vain ryhmän jäsen (lisääjä kuitenkin merkitään muistiin myöhempää selvittelyä ennakoiden). Nyt:

  1. ryhmäjäsenyys ei ole yhden ihmisen takana.
  2. ryhmän jäsenet yleensä älyävät ottaa yhteyttä vastuuhenkilöön, ennen kuin tiedonsiirto on myöhäistä.
  3. tärkeän ryhmän pystyy pelastamaan ryhtymällä vastuuhenkilöksi.

Usein näiden järjestelmien ongelma on se, että teknisen käyttöoikeuden mukana ei välity tieto siitä, mitä sillä saa tehdä (kaikki mahdollinen ei läheskään aina ole sallittua). Sallivat järjestelmät korostavat käyttäjävalistuksen tärkeyttä samalla, kun ovat vähemmän tiellä ja vähentävät byrokratiaa: profit.


Vähän googlailemalla löysin muutamia muita lähestymistapoja samaan ongelmaan, käytännössä juuri tuo mitä kutsun "ilmeiseksi ratkaisuksi":

Tajusin muuten juuri, että tämän anarkistisen käyttäjähallinnon pystyy toteuttamaan suoraan /etc/group:lla ilman SQL-backendia, koska vastuuhenkilöitä on ryhmässä vain yksi (joten vastuuhenkilö on ryhmän ensimmäinen jäsen). Mahtavaa! Tämä ei ollut tullut mieleen, koska kielitieteen laitoksella piti joka tapauksessa propagoida käyttäjätiedot eri paikkoihin, jolloin Unixin natiivien tietovarastojen käytöstä ei ollut erityisempää hyötyä. (Tälle on nyt toteutus, katso nettipäiväkirja 19.06.2014.)



kommentoi (viimeksi muutettu 16.02.2017 00:12)