Linux/Unix failiõigused

From EIK wiki


Sissejuhatus

Igal failil süsteemis, peab olema määratud kes võib sellega mida teha. Failiõigused on defineeritud kasutajatele, gruppidele ja kõikidele teistele kes ei ole faili omanikud ning ei kuulu antud gruppi (others). Iga kasutaja kuulub ühte või mitmesse gruppi. Samuti kuulub iga fail mingile kasutajale ning seega ka kasutaja gruppi. Kui kasutaja loob faili, siis on ta selle faili omanikuks. Samuti looja grupp ning kausta grupp kus fail asub, on seostatud selle failiga. Kasutades gruppe, saab piirata/lubada tegevusi teatud hulgal inimestel, mis on töökeskkonnas hädavajalik.

Kasutajad ja Õigused

Igale failile on määratud kolme tüüpi kasutajad:

user ( u ) - kasutaja kes omab/kontrollib faili

group ( g ) - grupp kes omab/kontrollib faili

others ( o ) - igaüks kes ei ole omanik ega ka grupis 

Kasutajatele on määratud kolme tüüpi õigused:

read ( r ) - annab võime lugeda faili. Kui aga see on määratud kataloogile,
siis võimaldab lugeda faili nimesi selles kaustas(küll aga mitte saada
lisainfot nt faili tüüp, suurus, õigused jne ) 

write ( w ) - kirjutamis õigus, mis annab võime muuta faili.
Kui määratud kataloogile, siis annab võime muuta sisestusi 
selles kaustas nn failide loomine/kustutamine, ümbernimetamine.

execute ( x ) - annab võime avada/käivitada faili. Kui on aga määratud kaustale,
võimaldab läbida alamkataloogide puu, ligipääseda failidele. 
Küll aga ei võimalda failide sisu näha (kui just read pole määratud)  

Kuidas näha failiõigusi

Et näha mis õigused failil on, tuleb sisestada:

ls -l failinimi/kaustanimi
ls -l (et näha kõiki faile ja katalooge kaustas kus parasjagu asutakse)

Wpid-permissions2.png

kriips (-) tähendab et õigust ei ole määratud

Kuidas muuta failiõigusi

Failiõigusi saab muuta kasutades käsku "chmod".

Näiteks kui Malle tahab anda minufaili kirjutamisõiguse administraatoritele, siis ta kirjutab:

chmod g+w minufail

g tähendab faili gruppi (administraatorid)

w tähendab kirjutamiõigust

+ tähendab andmist


chmod kasutatakse nelja parameetri järgi:

-Kasutajate tüüp kellel õigusi muuta (u - user, g -gruop, o - others, kas kombintatsioon nendest või "a" et määrata kõik)

-Mis tüüpi muudatust teha("+" et lisada õigus, "-" et õigus ära võtta, "=" et määrata õigused)

-Millised muudatusi õigustes teha(r - read, w - write, x - execute)

-Fail või grupp faile, millele muudatusi teha (failinimi)

Kausta õigused vs. failiõigused

LINUX/UNIX keskkonnas käivad kõik õigused ülevalt alla "topdown". See tähendab, kui keelata näiteks group õigused mingil kaustal, siis kõik alamkaustad ja failid pärivad samad õigused, kuigi visuaalselt seda näha ei ole. Näiteks kui õigused kaustale projekt on: drwxr-xr-x ja õigused kaustale projekt1 on: drwxr-xr-x. Keelates grupil ja teistel sisenemine kausta projekt, ehk õigused oleks drwx------, siis alamkausta projekt1 õigused jäävad visuaalselt samaks: drwxr-xr-x. Ainult et group ja others liikmetel tegelikult ei ole õiguseid mis on näidatud alamkaustal projekt1. Sama süsteem toimub, ainult et taguripidi, kui luua alamkaust ning määrata õigused lubamaks kasutajatel ja teistel siseneda kausta. Neil ei ole võimalik kausta siseneda kui puudub õigus siseneda kõikidesse eelnevatesse kaustadesse.

Octal System (kaheksandsüsteem)

Tihtipeale administraatorid kasutavad ka arvu süsteemi, mis asendab senised u,g,o ja a,r,w,x numbritega. Peamiselt eelistatakse seda kasutada just töö kiiremaks muutmise pärast. Samuti nende käskudega mitte ei lisata/võeta õigusi vaid ainult määratakse neid, seega võib tulemustes kindel olla.


Õiguste väärtused

-  0
x  1
w  2
r  4


---  0
--x  1
-w-  2
-wx  3
r--  4
r-x  5
rw-  6
rwx  7


Näide:

chmod 750 minufail 

750 tähendab: 7(rwx) omanikule, 5(r-x) grupile ning 0(---) teistele

Eelnev käsk on võrdne käsuga:

chmod u=rwx,g=rx myfile; chmod o-rwx minufail

Faili omaniku/grupi muutmine

Faili omanikuks saab määrata ka mingit teist kasutajat või gruppi. Kasutades käsku chown saab muuta faili omaniku ning chgrp käsuga faili gruppi, kuhu ta kuulub.

Näide: Malle tahab minufaili omanikuks teha hoopis Kalle, siis ta kirjutab:

chown Kalle minufail

Kalle tahab hiljem minufaili teha saadavaks ainult grupile bossid:

chgrp bossid minufail

Sama saab korda saata ka "chown" käsuga:

chown Kalle:bossid minufail

Sticky Bit

Üldiselt kasutatakse Sticky Bit'i jagatud kaustade puhul ( /tmp). Kui see on kaustale määratud, siis ainult kausta/faili omanik või superuser saab kustutada/ümbernimetada faile. Kui aga Sticky bit pole määratud, siis iga kasutaja kellel on kirjutamis/käivitamis õigused antud kaustale, võib kustutada/ümbernimetada selles sisalduvaid faile (olenemata omanikust).

Sellist erilist käsitlemist vajavad just avalikud kaustad, kus kasutajad peavad saama muudatusi teha. Omavoliliselt failide ümbernimetamine või kustutamine on aga keelatud.


Sticky Bit õiguste kindlaks tegemine kaustal (osadel kaustadel on see juba määratud):

# ls -ld /var/tmp 

drwxrwxrwt  2   sys   sys   512   Jun 20 11:02  /var/tmp

t - näitab et Sticky Bit on määratud


Et lisada/kustutada sticky bit kaustal, kasuta:

# chmod +t /tmp
# chmod -t /tmp

SUID (Set User ID)

Kui SUID on määratud failile/programmile, siis sinu kasutaja ID muudetakse vastavalt nagu selle programmi/faili omanikul. Lihtsalt öeldes pärib käivitatav sinu õigused. Näiteks kui tahetakse käivitada programm/fail millel on root õigused ja SUID määratud, siis tavakasutaja saab seda käivitada kui juurkasutaja.

Kui SUID on määratud, siis omaniku õiguste all s asendab x -i :


 
-rwsr--r-- 1 root root 2321 2011-05-26 12:15 kala.txt 



Et lisada/kustutada SUID failil:

# chmod u+s fail
# chmod u-s fail 

SGID (Set Group ID)

Samamoodi nagu SUID, muudetakse sinu grupi ID vastavalt faili/kausta ID-le, kui viimane käivitada. Lihtsamalt öeldes pärib käivitatav sinu grupiõigused.

See tuleb kasuks kui on palju kasutajaid, kes peavad üksteise failidele ligi saama.

SGID määramine kataloogile, annab seal olevatele failidele/alamkataloogidele grupi omanduse.


Et lisada/kustutada SGID kaustal:

# chmod g+s kaust
# chmod g-s kaust

Kui SGID on määratud, grupi õiguste all s asendab x -i :

ls -l kaust

drwxrwsr-x  10 Kalle administrators  4096 2006-03-10 12:50 kaust



POSIX õigused (ACL)

Kui soovitakse objektile seada keerulisemaid ja mitmekesisemaid õiguseid siis võetakse appi ACL (Access Control List), mis on nimekiri ühe objektiga seotud õigustest. Selle abil saab kindlale kasutajale ja grupile teha juurde lisaõigusi.


ACL kasutatakse tavaliselt õiguste seadmiseks ühele failisüsteemi objektile


ls -l - kuvab omaniku, grupi ja teiste klasside õigused

setfacl - muudab objekti ACL õigusi (setfacl vajadusel paigaldada)

getfacl - kuvab objekti spetsiifilised ACL õigused (getfacl vajadusel paigaldada)


POSIX õigustest on täpsemalt räägitud eraldi teemas

POSIX õigused (ACL)

Kasutatud kirjandus

http://help.unc.edu/217

http://www.linuxforums.org/articles/file-permissions_94.html

http://en.wikipedia.org/wiki/Filesystem_permissions

http://blogs.simplythebest.net/RadianT/4/UnixLinux+File+Permissions.html


Autor

Sten Vaisma A22