MedlemsDB2 og Unix

NB: Mye i denne noden er utdatert etter migreringen til AD. Mye er dog fortsatt relevant.

Vi har etter litt evolusjonær stunt-utviding fått endel av Unixintegreringen som beskrevet i det nå historiske dokumentet MedlemsDB2Unixutvidelse. Se der for use cases og begrunnelse og andre gode tanker.

Idéen er at alle Unix-brukere skal ha sitt opphav i medlemsdatabasen. I henhold til brukerpolicy skal alle brukere være tatt opp i en gjeng og være gyldige medlemmer på Samfundet for å få eller beholde brukeren sin.

Koblingen mellom MDB og Unix-brukersystemet er litt løs, men velfungerende. medlem-tabellen har et felt som sier hvilket brukernavn hvert medlem har. I tillegg har vi en mange-til-mange-kobling mellom faktiske unixgrupper og gruppene i medlemsdatabasen. Basert på dette skal folk få bruker, samt være i de rette unixgruppene i forhold til sine verv. Se MedlemsDB2Grupper for hvordan arving og tilhørighet fungerer.

Oppretting av brukere

Oppretting av bruker skal og gjøres med itkadduser (eller implisitt via MDB2 for UAK). itkadduser spør om medlemskortnummer og en rekke andre ting. Den forsøker å gjette seg til verdier for de fleste felt. Den oppretter unixbruker, Sambabruker, Kerberosprincipal og setter feltet brukernavn i medlem-tabellen, samt gjør brukeren medlem av de rette unixgruppene i forhold til verv og grupper.

Se mer på itkadduser

Sletting av brukere

Sletting av brukere skal og gjøres med itkdeluser. Den oppdaterer tabeller og sletter alle tingene som itkadduser lager.

Brukere uten gyldig medlemskap blir etterhvert slettet automatisk fra cron på cass:/etc/cron.d/mdb2-unixsync

Unixsync

Men hva gjør vi når medlemmer blir tatt opp i nye grupper, eller får nye verv? Da kommer jo forholdet mellom unixgrupper og verv ut av synk! Derfor har vi en synk mellom MDB og Unixgrupper. Denne bærer det klingende navnet unixsync. Den kjører via cron på cass én gang i timen. Den tar for seg alle brukere med uid over eller lik 500 (altså ikke systembrukere) og gjør følgende:

I tillegg klager den når brukere har primærgruppen sin som supplemental group, som er unødvendig.

Hver søndag kjører den også, men da rapporterer også om brukere som har feil primærgruppe. De må manuelt flyttes til nytt gjengområde og byttes primærgruppe på. Det tør vi ikke gjøre maskinelt, så da får ITKere arbeidsoppgaver på mandager.

«Hvordan får jeg tilgang?»

Iblant spør brukere og gjengsjefer om de kan få tilgang til katalogene ditten og datten. Før måtte ITK gi tilgangene manuelt. Nå slipper vi altså det - ansvaret bare videreformidles til gjengsjef. TODO: Lage sjekkliste for gjengsjefer når folk ikke får tilgang (type, tatt opp i rett gruppe, gyldig medlemskap, osv)

Grupper

Unixsync vil kun tukle med grupper som ligger i cassarossa:/etc/itk/allowed_groups. Alle andre grupper vil ignoreres. UI-et til MDB vil ikke inneholde grupper før de er knyttet til minst en gruppe. Derfor må unixgruppen knyttes mot en MDB-gruppe når den opprettes med itkaddgroup eller senere settes inn rett i SQL ved behov. Se opprette unixgrupper for en forklaring på hvordan dette bør gjøres.

Altså må en gruppe finnes i allowed_groups og i DB-en for at ting skal funke.

Hvor finner jeg magien?

itkadduser og itkdeluser er i git-prosjektet itkadduser.

unixsync ligger i MDB2-treet. Se MedlemsDB2, hvordan utvikle for utviklingsinformasjon. I tillegg prodsettes den ved å kopiere unixsync.pl til cassarossa:/usr/local/sbin/. Se også cronjobbene i /etc/cron.d/mdb2-unixsync

Konfigurasjonsfilene til verktøyene befinner seg i casssarossa:/etc/itk/

Use-case: legge til alle unixgrupper hos én gruppe til en annen

Eksempelvis, ved nytt UKST og de skal få alle UNIX-grupper som tidligere UKST hadde. I dette eksempelet er tidligere UKST gruppe_id 2117 og nytt UKST gruppe_id 2572:

INSERT INTO unixgrupper(gruppe_id, unixgruppe)
SELECT DISTINCT 2572, unixgruppe
FROM unixgrupper
WHERE unixgruppe NOT IN
  (SELECT unixgruppe
   FROM unixgrupper
   WHERE gruppe_id = 2572)
AND unixgruppe NOT IN
  (SELECT unixgruppe
   FROM kortsys2.mdb_gruppekobling_transitiv_tillukning
   LEFT JOIN gruppe ON overgruppe_id = gruppe_id
   NATURAL JOIN unixgrupper
   WHERE undergruppe_id = 2572)
AND unixgruppe IN
  (SELECT unixgruppe FROM unixgrupper WHERE gruppe_id = 2117);

Lenker: Start, medlemsdb2, medlemsdb2grupper, medlemsdb2unixutvidelse

Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2019-07-21 18:30 | Revisjon: 11 (historie, blame) | Totalt: 1886 kB | Rediger