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)
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
Línur skráarinnar hafa sniðið
anna:x:1000:1000:Anna Nemandi:/home/anna:/bin/zsh
anna: Notandanafn.x: Ónotað í dag, en var notað fyrir lykilorð áður.1000: UID notandans.1000: GID aðalhóps notandans.Anna Nemandi: Lýsing eða athugasemd um notandann./home/anna: Heimamappa notandans./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
Þ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
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
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
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
Frálagið gæti til dæmis litið út á þessa leið
-rwsr-xr-x 1 root root ... /usr/bin/sudo
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
Frálagið ætti að vera á þessa leið
drwxrwxrwt ... /tmp
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
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-permissionsverkefnasafninu á fylgiþjóninum.
Verkefni