Hoppa yfir í efnið

Notendur og heimildir

Verkefnasafn

Þessi kafli hefur tilheyrandi verkefnasafn á fylgiþjóninum. Til að sækja það og byrja að leysa verkefnin geturðu keyrt skipunina:

fetch users-and-permissions

Linux var hannað frá upphafi sem fjölnotendakerfi (e. multi-user system). Það þýðir að margir geta unnið á sömu tölvunni án þess að trufla hvern annan. Kerfið heldur utan um hver má lesa, breyta og keyra hvaða skrár.

Hver er ég?

Í Linux hafa allir notendur notandanafn, sem hægt er að sjá með whoami (stytting á who am I). Á bak við tjöldin auðkennir Linux þó notendur með notandaauðkenninu UID (e. User ID). Hópar eru einnig auðkenndir með hópaauðkenni GID (e. Group ID). Hægt er að sjá bæði notanda- og hópaauðkenni með

id

Dæmi um dæmigert frálag þeirra skipunar er

uid=1000(anna) gid=1000(anna) groups=1000(anna),27(sudo)
þar sem eftirfarandi gildi skipta mestu máli sem listar upp notandaauðkenni og notandanafn, hópaauðkenni aðalhóps notandans, og svo hópaauðkenni allra hópa sem notandinn tilheyrir. Til að fá einungis lista yfir þá hópa sem notandi tilheyrir er hægt að nota groups.

Vissir þú?

Ofurpaurinn root hefur notendaauðkennið 0. Í Linux er það auðkennið, ekki nafnið á notandanum, sem gefur ofurpaursréttindi. Notandinn gæti í raun heitið eitthvað annað, en UID 0 hefur samt sérstaka stöðu.


Bókhald notanda og hópa

Allar upplýsingar um skráða notendur kerfisins eru geymdar í /etc/passwd og til að skoða þær getum við skrifað út innihald skráarinnar með

cat /etc/passwd
sem sýnir okkur allar færslurnar.

Línur skráarinnar hafa sniðið

anna:x:1000:1000:Anna Nemandi:/home/anna:/bin/zsh
þar sem hlutarnir eru aðskildir með tvípunktum og hafa eftirfarandi merkingu

  1. anna: Notandanafn.
  2. x: Ónotað í dag, en var notað fyrir lykilorð áður.
  3. 1000: UID notandans.
  4. 1000: GID aðalhóps notandans.
  5. Anna Nemandi: Lýsing eða athugasemd um notandann.
  6. /home/anna: Heimamappa notandans.
  7. /bin/zsh: Sjálfgefin skel notandans.

Á sama hátt eru allir hópar skráðir í /etc/group og við getum prentað þá á skjáinn með skipuninni

cat /etc/group
sem sýnir okkur hvaða hópar eru skráðir í kerfinu.

Þessar skrár eru venjulega læsilegar öllum því mörg forrit þurfa að geta flett upp notendanöfnum og hópum. Það þýðir þó ekki að allir geti breytt þeim.

Af hverju heitir skráin passwd?

Í mjög gömlum Unix-kerfum voru tætigildi lykilorða (e. password hashes), sem við fáum að kynnast síðar, geymd í /etc/passwd. Í dag eru tætigildi lykilorða yfirleitt geymd í /etc/shadow, sem venjulegir notendur mega ekki lesa. Nafnið passwd lifði samt áfram.


Að skipta um lykilorð

Á kerfum sem styðjast við hefðbundin lykilorð getur notandi breytt sínu eigin lykilorði með því að nota skipunina passwd (stytting á password):

passwd
sem biður um gamla lykilorðið og nýja lykilorðið í kjölfarið.

Lykilorð á fylgiþjóninum

Athugið að fylgiþjónninn er stilltur þannig að auðkenning er aðeins möguleg með SSH-lyklum. Notendur hafa þannig ekki lykilorð og því er ekki hægt að nota passwd þar.


Eigendur, hópar og aðgangur

Eins og rætt var í kaflanum um skráakerfið mun ítarlegt skráarlistaútgáfa með ls -l sýna eiganda, hóp og heimildir skráarinnar, til dæmis

-rw-r----- 1 anna nemendur 1200 jún  4 12:00 skjal.txt
þar sem sjá má að anna á skrána og að hún tilheyri hópnum nemendur.

Heimildirnar tilgreina að eigandinn megi lesa og breyta skránni, en hópurinn megi aðeins lesa hana. Við getum breytt þessum réttindum og hópnum með því að keyra skipanir eins og chmod og chgrp.


Aukin réttindi

Til að skrá okkur inn sem annar notandi í Linux höfum við skipunina su (stytting á substitute user), en til þess þurfum við að vita lykilorð notandans. Á því er þó ein undantekning, en ofurpaurinn getur skráð sig inn sem hvaða notandi sem er, án lykilorðs.

su            # Skráum okkur inn sem ofurpaurinn (root)
su notandi    # Skráum okkur inn sem notandi

Ýmsar aðgerðir sem reglulega þarf að framkvæma á Linux kerfum krefjast stjórnunaraðgangs, eins og t.d. að uppfæra stýrikerfið og sumar kerfisstillingar, sýsla með kerfisþjónstur og margt fleira. Það getur reynst hvimleitt að þurfa alltaf að skrá sig inn sem ofurpaurinn til að framkvæma slíkar aðgerðir. Skipunin sudo (stytting á superuser do) leysir einmitt það vandamál, en hún gerir okkur kleift að framkvæma aðgerðir í nafni ofurparusins (og annarra notenda, sé þess þörf), án þess að skrá okkur inn sem hann.

Í leiðbeiningum er algengt að sjá skipanir eins og

sudo apt update
en apt er skipunin sem sér um að uppfæra og sækja pakka í Debian Linux, sem Ubuntu byggir á. Þessi skipun krefst stjórnendaréttinda til að geta uppfært pakka stýrikerfisins.


Sérstakar heimildir

Af hverju fær sudo að keyra skipanir í nafni annars notanda en þeim sem kallaði á skipunina? Svarið felst í ákveðnum heimildum sem skipunin hefur, en auk hefðbundnu réttindanna r, w og x styður Linux nokkrar sérstakar heimildir sem mikilvægt er að þekkja.

SUID

Hægt er að nota SUID (e. Set User ID) til að leyfa forriti að keyra tímabundið með réttindum eiganda skráarinnar. Gott dæmi er einmitt sudo og við getum skoðað þessi réttindi með því að keyra

ls -l /usr/bin/sudo
sem skrifar út upplýsginar um forritið.

Frálagið gæti til dæmis litið út á þessa leið

-rwsr-xr-x 1 root root ... /usr/bin/sudo
þar sem bókstafurinn s kemur í stað x hjá eigandanum. Það gefur til kynna að SUID sé virkt á þessari skrá. Þar sem eigandi skráarinnar er root, þá þýðir það að sama hvaða notandi keyrir skipunina er hún keyrð með réttindum ofurpaursins.

SGID

Svipuð hugmynd býr að baki SGID (e. Set Group ID) en hún leyfir að skipun sé keyrð með réttindum hóps skráarinnar.

Banabitinn

Á sameiginlegum möppum eins og /tmp er oft notast við banabitann, sem tryggir að þótt margir geti búið til skrár þar, megi notendur ekki eyða skrám sem aðrir eiga. Við getum skoðað réttindin á /tmp með því að keyra

ls -ld /tmp
og rýna í niðurstöðuna.

Frálagið ætti að vera á þessa leið

drwxrwxrwt  ... /tmp
þar sem bókstafurinn t í endann sýnir að banabitinn er til staðar.

Prófaðu: skoða sérstakar heimildir

Kannaðu sjálf/ur hvernig SUID og banabitinn birtist á þínu kerfi.

Lausn

Við getum prentað réttindin á fljótlegan hátt með því að keyra

ls -l /usr/bin/passwd
ls -ld /tmp
til að skoða réttindastafina beint.

Vissir þú?

Nafnið „sticky bit“ kemur frá eldri Unix-kerfum þar sem bitinn gat látið forrit „festast“ lengur í minni til að ræsast hraðar næst. Með framþróun tölva úreltist sú notkun og bitinn fékk þennan nýja tilgang, en nafnið lifði áfram.

Til að æfa þig í að leysa raunveruleg verkefni varðandi heimildir mælum við með því að ljúka verkefnunum í users-and-permissions verkefnasafninu á fylgiþjóninum.

Verkefni

Hér má finna öll verkefnin úr efni þessa kafla.

Opna verkefni