Tiedostoille voi antaa luku, kirjoitus tai suoritusoikeuden. Unixissa myös hakemistot ovat tiedostoja, joten niillekin on nämä samat oikeudet: suoritusoikeus sallii hakemistossa olevien tiedostojen lukemisen, kirjoitus sallii uusien tiedostojen luomisen hakemistoon ja lukuoikeus hakemistolistauksen näkemisen.
Koska Unix on monen käyttäjän järjestelmä, oikeudet annetaan
omistajalle, ryhmälle ja muille. Nämä ilmaistaan kolmella kirjaimella
kullekin joukolle, yhteensä siis yhdeksän kirjainta. Listauksen
ensimmäinen merkki ilmaisee tiedoston tyypin, tavallinen tiedosto on
-
, hakemisto on d
, character
device on c
, symbolinen linkki on
l
jne.
Esimerkki selventäköön hakemiston suoritusoikeuden vaikutusta:
Esimerkki 4.1. Hakemiston suoritusoikeuden vaikutus
phb:~# mkdir /tmp/Testi phb:~# ls -ld /tmp/Testi/ drwxr-xr-x 2 root root 4096 Dec 30 09:07 /tmp/Testi/ phb:~# touch /tmp/Testi/tiedosto.txt phb:~# ls -l /tmp/Testi/ total 0 -rw-r--r-- 1 root root 0 Dec 30 09:07 tiedosto.txt phb:~# chmod o-x /tmp/Testi/ phb:~# ls -ld /tmp/Testi/ drwxr-xr-- 2 root root 4096 Dec 30 09:07 /tmp/Testi/ phb:~# echo "Et arvaa" > /tmp/Testi/tiedosto.txt phb:~# chmod o+x-r /tmp/Testi phb:~# ls -ld /tmp/Testi/ drwxr-x--x 2 root root 4096 Dec 30 09:07 /tmp/Testi/ phb:~#
Muut kuin root eivät saa luettua tiedosto.txt
vaikka itse tiedostoon onkin lukuoikeus koska hakemistossa ei ole
muille kuin omistajalle ja ryhmäomistajalle suoritusoikeus (x eli
eXcecute). Kun lisätään suoritusoikeus ja otetaan pois lukuoikeus,
muut käyttäjät eivät pääse näkemään hakemistolistausta mutta pääsevät
lukemaan tiedoston jos tietävät sen nimen:
Esimerkki 4.2. Hakemiston luku- ja suoritusoikeus
tale@phb ~/Work/Debian/ESKK $ ls -ld /tmp/Testi/ drwxr-x--x 2 root root 4096 joulu 30 09:07 /tmp/Testi/ tale@phb ~/Work/Debian/ESKK $ ls -l /tmp/Testi/ /bin/ls: /tmp/Testi/: Permission denied tale@phb ~/Work/Debian/ESKK $ cat /tmp/Testi/tiedosto.txt Et arvaa tale@phb ~/Work/Debian/ESKK $
Oikeuksia muutetaan komennolla chmod, helpointa on käyttää tunnuksia u, g ja o (user, group ja other) joukoille omistaja, ryhmä ja muut (ja a tarkoittaa kaikkia näitä kolmea) sekä oikeuksia r, w ja x. Oikeus lisätään plussalla ja otetaan pois miinuksella, yhtäläisyysmerkillä voi antaa oikeudet suoraan.
Esimerkki 4.3. chmod
$ ls -lt total 0 -rw-r--r-- 1 tale tale 0 joulu 30 18:42 Tiedosto.txt tale@phb /tmp/Testi $ chmod ug+x Tiedosto.txt tale@phb /tmp/Testi $ ls -l Tiedosto.txt -rwxr-xr-- 1 tale tale 0 joulu 30 18:42 Tiedosto.txt tale@phb /tmp/Testi $ chmod g-r Tiedosto.txt tale@phb /tmp/Testi $ ls -l Tiedosto.txt -rwx--xr-- 1 tale tale 0 joulu 30 18:42 Tiedosto.txt tale@phb /tmp/Testi $ chmod a=r Tiedosto.txt tale@phb /tmp/Testi $ ls -l Tiedosto.txt -r--r--r-- 1 tale tale 0 joulu 30 18:42 Tiedosto.txt tale@phb /tmp/Testi $
L33t voi antaa oikeudet numeroina:
Esimerkki 4.4. L33t chmod
phb:~# chmod 421 /tmp/Testi/tiedosto.txt phb:~# ls -l /tmp/Testi/ total 4 -r---w---x 1 root root 9 Dec 30 09:09 tiedosto.txt phb:~#
Tämä on sama kuin chmod u=r,g=w,o=x
/tmp/Testi/tiedosto.txt.
Vielä on suid-bitti jolla komento saa tiedoston omistajan oikeudet eikä komennon suorittajan oikeuksia. Mikäli on komento joka tarvitsee pääkäyttäjän oikeudet, pistetään tiedoston omistajaksi root ja chmod u+s. Tätä ei kuitenkaan pidä tehdä summamutikassa, mikäli komennon voi houkutella suorittamaan mielivaltaisia komentoja saa tällä tavalla täydet pääkäyttäjän oikeudet. Ylipäätään rootin oikeuksien kanssa kannattaa olla tarkkana eikä antaa niitä yhtään ylimääräisiä.
Katso myös Esimerkki 5.4, ”Ryhmähakemiston käyttö”.
Oikeuksien antamisessa on rajoituksena käyttäjien määrittely, on vain omistaja, ryhmä ja kaikki muut. Ei voi antaa oikeuksia yhdelle nimetylle käyttäjälle (paitsi omistajalle, tai tekemällä ryhmän jossa vain yksi käyttäjä). On mahdollista ottaa käyttöön Access Control List eli ACL, joilla saa oikeudet tarkemmin määriteltyä, vastaavasti kuin NTFS:ssä.
Unixissa tiedoston nimessä isot ja pienet kirjaimet ovat
merkitseviä, eli Testi.txt
ja
testi.txt
ovat kaksi eri tiedostoa.
Unixeissa ei ole tietokoneviruksista suuremmalti ongelmaa koska niiden tekemisestä ei olisi vastaavaa hyötyä. Unixissa yritetään crakkeroida rootin oikeudet etsimällä niistä ohjelmista joita suoritetaan rootin oikeuksilla tietoturvavikoja.