Notendur og heimildir
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.
Þessi hluti snýst fyrst og fremst um venjulega daglega notkun: hver þú ert, hvaða hópum þú tilheyrir og af hverju sumar skrár eru lokaðar.
Hver er ég?
Í Linux ert þú ekki bara tilgreint notandanafn heldur geymir kerfið þig sem sérstakt númer sem kallast UID (e. User ID). Með því að keyra skipanirnar whoami (stytting á who am I), id (stytting á identifier), og groups (stytting á groups):
whoami # notandanafnið þitt
id # UID, GID og hópar
groups # hóparnir þínir
Dæmi um dæmigert úttak gæti verið
uid=1000(anna) gid=1000(anna) groups=1000(anna),27(sudo)
- UID: auðkenni notanda.
- GID: aðalhópur notanda.
- groups: aðrir hópar sem notandinn tilheyrir.
Kerfið notar númerin undir yfirborðinu. Nöfnin eru fyrst og fremst þægileg fyrir okkur mannfólkið.
/etc/passwd og /etc/group
Allar upplýsingar um skráða notendur kerfisins eru geymdar í /etc/passwd og til að skoða þær getum við prentað innihald skráarinnar með því að keyra
cat /etc/passwd
Ein tiltekin lína gæti til dæmis litið svona út
anna:x:1000:1000:Anna Nemandi:/home/anna:/bin/bash
anna: notandanafn.x: lykilorðið er ekki geymt hér lengur.1000: UID.1000: aðal GID.Anna Nemandi: lýsing eða fullt nafn./home/anna: heimamappa./bin/bash: sjálfgefin skel.
Á 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 lykilorðshakkar geymdir í /etc/passwd. Í dag eru raunveruleg lykilorð yfirleitt í /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
passwd.
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 nemendur er hópnum úthlutað.
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 640 skjal.txt
chgrp nemendur skjal.txt
Sjálfgefnar heimildir og umask
Þegar nýjar skrár verða til ákveður kerfið sjálfgefnar heimildir með hliðsjón af svokölluðu umask gildi. Til að skoða og prófa umask-gildið getum við keyrt skipanirnar
cd ~/examples
umask
mkdir -p playground/umask-demo
touch playground/umask-demo/skra.txt
ls -ld playground/umask-demo playground/umask-demo/skra.txt
Algengt gildi er 0022. Þá eru nýjar skrár oft 644 og nýjar möppur 755: eigandinn má skrifa, en aðrir mega yfirleitt bara lesa eða fara inn.
Prófaðu: skoða eiganda og heimildir
Skoðaðu heimildir á nokkrum æfingaskrám. Hver er munurinn á scripts/hello.sh og permissions/run_me.sh?
Lausn
Við getum rannsakað skráarheimildirnar og okkar eigin hópa með því að keyra skipanirnar
cd ~/examples
ls -l scripts/hello.sh permissions/run_me.sh permissions/private_note.txt
id
groups
scripts/hello.sh hefur keyrsluréttindi x á meðan permissions/run_me.sh vantar þau í upphafi.
Á kerfum þar sem við höfum stjórnandaréttindi getum við framkvæmt skipanir sem ofurpaur (e. superuser, oft kallaður root) með því að slá inn
sudo whoami
su og sudo
Þótt tvær skyldar skipanir kunni að virðast svipaðar er munurinn á þeim skýr:
- Skipunin
su(stytting á substitute user) skiptir yfir í annan notanda ef við þekkjum lykilorð viðkomandi. - Skipunin
sudo(stytting á superuser do) keyrir eina staka skipun með réttindum annars notanda ef kerfið leyfir okkur það.
Við sjáum þetta í verki með skipunum eins og
su - anna
sudo apt update
sudo mun algengari en að skrá sig beint inn sem root.
Prófaðu: taka heimild af afriti
Afritaðu permissions/private_note.txt í playground/, taktu lesheimildina af og bættu henni svo aftur við.
Lausn
Við getum prófað að eiga við réttindi á okkar eigin afriti með því að keyra skipanalistann
cd ~/examples
cp permissions/private_note.txt playground/private-copy.txt
ls -l playground/private-copy.txt
chmod u-r playground/private-copy.txt
cat playground/private-copy.txt
chmod u+r playground/private-copy.txt
cat playground/private-copy.txt
cat skilar villu þegar lesheimildina vantar en virkar fullkomlega aftur þegar við bætum henni við.
Prófaðu: umask í verki
Búðu til nýja skrá og nýja möppu í playground/ og skoðaðu hvaða heimildir þær fá sjálfgefið.
Lausn
Til að fylgjast með hvernig sjálfgefnar heimildir verða til getum við keyrt skipanirnar
cd ~/examples
umask
mkdir -p playground/default-dir
touch playground/default-file.txt
ls -ld playground/default-dir playground/default-file.txt
umask til að skilja þau betur.
Sérstakar heimildir: SUID, SGID og sticky bit
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 passwd og við getum skoðað það með því að keyra
ls -l /usr/bin/passwd
Úttakið gæti til dæmis litið út á þessa leið
-rwsr-xr-x 1 root root ... /usr/bin/passwd
s í stað x hjá eigandanum gefur til kynna að SUID sé virkt.
SGID
Samsvarandi hugmynd er SGID (e. Set Group ID) sem tengist hópnum í stað notandans. Ef við viljum að nýjar skrár inni í tiltekinni möppu erfi sjálfkrafa hópinn hennar getum við keyrt skipunina
chmod g+s sameiginleg_mappa
Sticky bit
Á sameiginlegum möppum eins og /tmp er oft notað sticky bit 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
Úttakið gæti litið út á þessa leið
drwxrwxrwt ... /tmp
t í endann sýnir að sticky bit er til staðar.
Prófaðu: skoða sérstakar heimildir
Kannaðu sjálf/ur hvernig SUID og sticky bit birtast á þí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. Sú merking er að mestu horfin, en nafnið lifði áfram.
Hverjir eru inni á kerfinu?
Á stórum fjölnotendakerfum er afar auðvelt að fylgjast með hverjir eru skráðir inn samtímis með því að keyra skipanir eins og who (stytting á who), w (einnig stytting á who en ítarlegri), og last (stytting á last):
who
w
last
Vissir þú?
Ofurpaurinn hefur UID-númerið 0. Í Linux er það númerið, ekki nafnið sjálft, sem gefur ofurpaursréttindi. Notandinn gæti í raun heitið eitthvað annað, en UID 0 hefur samt sérstaka stöðu.
Smá samantekt
Eftir þennan hluta ættirðu að geta:
- fundið notandanafnið þitt með
whoami,idoggroups, - lesið grunnbyggingu lína í
/etc/passwdog/etc/group, - útskýrt eiganda, hóp og aðgang annarra,
- prófað
chmodá eigin afritum, - skilið í grófum dráttum hvað
sudo,su, SUID, SGID og sticky bit eru, - skoðað hverjir eru skráðir inn með
whoogw.