Sen listan alussa, jonka esim. komento
ls -l
antaa,
on kunkin tiedoston suojauksista kertova koodi. Seuraavassa on esimerkki:
total 42 -rw-r--r-- 1 jkorpela users 169 Mar 30 11:09 RMAIL -rwxr-xr-x 1 jkorpela users 16384 Mar 30 11:07 a.out drwxr-xr-x 2 jkorpela users 1024 Apr 24 09:08 Yhdistystoiminta -rw-r--r-- 1 jkorpela users 26 Mar 30 10:51 ikiliikkuja.c -rw-r--r-- 1 jkorpela users 71 Mar 30 11:00 notes -rw-r--r-- 1 jkorpela users 31 Mar 30 10:57 notes~Yritä hahmottaa rivin alussa oleva merkintä
--rw-r--r--
1+3+3+3 merkin ryhminä; esim.
RMAIL
-tiedoston osalta merkit pitäisi hahmottaa seuraavasti:
1. 2. 3. 4. ryhmä - rw- r-- r-- 1 jkorpela users 169 Mar 30 11:09 RMAILMainittujen merkkiryhmien merkitykset ovat seuraavat:
jkorpela
on kaikkien tiedostojen omistaja.
users
.
more
-komennolla, sen
voi tulostaa tai ottaa Emacsilla luettavaksi, siitä voi tehdä kopion jne.
Otetaan esimerkiksi RMAIL
-tiedosto:
-rw-r--r-- 1 jkorpela users 169 Mar 30 11:09 RMAILEnsimmäinen merkki on -, joten
RMAIL
on siis
tiedosto eikä hakemisto.
Toinen merkkien ryhmä on rw-
,
joka siis tarkoittaa, että tunnuksella jkorpela
on luku- ja kirjoitusoikeus, mutta hän ei voi ajaa tiedostoa ohjelmana.
Kolmas merkkiryhmä on r--
,
joka tarkoittaa sitä, että users
-ryhmällä on lukuoikeus,
mutta ei kirjoitus- tai ohjelman ajo-oikeutta.
Neljäs ryhmä on r--
, joka tarkoittaa, että muillakaan käyttäjillä ei ole muita oikeuksia kuin lukuoikeus.
Usein ryhmäjärjestelyjä ei käytetä, vaan kaikki käyttäjät kuuluvat samaan ryhmään. Silloin suojaus ryhmän suhteen on ratkaiseva, ja suojaus "kaikkien muiden" suhteen on syytä asettaa samaksi kuin ryhmän suhteen.
Hakemistolla on muodollisesti samanlaiset suojaustiedot kuin tavallisella tiedostollakin, mutta niiden merkitykset ovat toisenlaiset: hakemiston suojauksissa
ls
-komennolla) hakemiston sisällöstä ja
että muutoin hakemiston sisältämät tiedostonnimet
(ja alihakemistojen nimet) ovat "nähtävissä", mikä
vaikuttaa mm. tunnistuksen käyttöön tiedostonnimissä
mv
-komennolla)
sekä poistaa tiedostoja
ls -l
näyttää;
usein x-oikeutta hakemistoon kutsutaan hakuoikeudeksi (search permission),
mikä on siis melko harhaanjohtavaa.
ls
-komentoa eikä tunnistusta.
Suojaukset voi esittää paitsi kirjaimilla myös numerokoodeilla seuraavasti:
751
tarkoittaa samaa
kuin rwxr-x--x
.
Hakemistojen ja tiedostojen oletusarvoiset suojaukset ovat erilaisia eri Unix-koneissa. Varsin tavallista on, että käyttäjillä on oletusarvoisesti lukuoikeudet toistensa hakemistoihin ja tiedostoihin, ja heidän siis täytyy itse suojata tiedostonsa, jos eivät halua niiden sisällön näkyvän muille.
Esimerkiksi jos oletussuojaus on sellainen, että käyttäjillä ei ole mitään oikeuksia toistensa kotihakemistoihin, mutta toisaalta tiedostojen oletussuojaus on sellainen, että muilla käyttäjillä on niihin luku- ja suoritusoikeus, niin muilla ei ole mitään oikeuksia tiedostoihisi, koska kotihakemistosi suojaus estää sen. Mutta toisaalta jos tällöin haluat antaa muille lukuoikeudet (tai suoritusoikeudet) joihinkin tiedostoihisi, sinun pitää antaa muille x-oikeus kotihakemistoosi ja muuttaa kaikkien muiden tiedostojesi suojaukset, jotta ne eivät myös tulisi kaikkien nähtäville.
Tilanne on selvin silloin, kun käyttäjillä ei oletusarvoisesti ole mitään oikeuksia muiden käyttäjien tiedostoihin. Tällöin riittää, että käyttäjä vain lisää muille oikeuksia siinä määrin kuin haluaa.
chmod
Tiedoston suojaus muutetaan chmod
-komennolla.
Nimi tulee sanoista change mode; suojauksia
kutsutaan Unixissa yleisesti tiedoston moodiksi (mode).
Esimerkki chmod
-komennosta:
chmod go+r foobarTämän komennon argumentit voidaan lukea seuraavasti: samaan ryhmään kuuluville (
g
, group)
ja kaikille muille (o
, others)
lisätään (+
)
lukuoikeus (r
, read) tiedostoon foobar
.
Yleisesti chmod-komennossa ilmoitetaan tässä järjestyksessä
u
tarkoittaa omistajaa itseään (user)
g
tarkoittaa ryhmään kuuluvia (group)
o
tarkoittaa kaikkia muita (others)
a
tarkoittaa aivan kaikkia (all), siis sama kuin ugo
+
tai -
,
halutaanko lisätä vai poistaa oikeuksia
r
, w
,
x
), mitä oikeuksia muutos koskee
chmod
-komennolle siis kerrotaan vain, mikä muuttuu.
Muilta osin suojautukset pysyvät ennallaan.
Jos chmod
-komennolla yritetään lisätä (+) oikeus,
joka jo on olemassa, tai poistaa (-) oikeus, jota ei ole, mitään virheilmoitusta ei tule eikä mikään muutu tältä osin.
Korostettakoon, että chmod
-komennolla voi muuttaa vain
olemassaolevien tiedostojen suojauksia. Mikään chmod
-komento
ei vaikuta niiden tiedostojen suojauksiin, jotka luot komennon antamisen
jälkeen, vaan niiden suojaukset määräytyvät oletusarvojen mukaan.
On kyllä mahdollistaa muuttaa näitä oletusarvoja, joskin välineen
eli umask
-komennon oppimisessa on käsitteellisiä vaikeuksia.
Kyseisessä komennossa
(joka on shellin komento)
ilmaistaan suojaukset
numerokoodilla ja käänteisesti:
esim. umask 022
aiheuttaa sen, että vastedes syntyviin tiedostoihin
ryhmällä ja muilla ei ole koodia 2 vastaavaa oikeutta
eli kirjoitusoikeutta.
Komennon vaikutus on istuntokohtainen, joten jos se todella
halutaan pysyväksi, se on kirjoitettava sopivaan alustustiedostoon.
Käyttäjä voi myös ottaa itseltään pois kirjoitusoikeudet johonkin tiedostoon, esim.
chmod a-w
tiedosto poistaa kaikilta, myös itseltä,
kirjoitusoikeuden.
Jotkut käyttävät tätä turvatoimena estääkseen itseään vahingossa hävittämästä tai muuttamasta jotakin tärkeää tiedostoa.
Jos käyttäjä yrittää esim. hävittää näin suojatun tiedostonsa, tulee kysymys
override protection 544 for foo?
ja käyttäjä voi vastata y
tai n
sen mukaan, haluaako todella hävittää sen.
(Tiedoston suojaus näkyy siis edellä esitetyllä
tavalla numerokoodina.)
Jos tiedostolle yrittää tehdä jotain muuta, niin toiminto epäonnistuu
ja tulee virheilmoitus Permission denied
.
Käyttäjä voi tiedoston omistajana muuttaa näin suojatun tiedoston
suojauksia ja sitten tehdä sille mitä haluaa.
Seuraavassa on pieni esimerkki.
Käyttäjällä on tiedosto, jolla on sellainen suojaus, että
kaikilla, myös käyttäjällä itsellään, on siihen vain lukuoikeus.
Kun käyttäjä yrittää hävittää tiedoston, järjestelmä kysyy,
halutaanko ohittaa (override) sen suojaus; kun tähän vastataan y
,
toiminto onnistuu.
(Tässä ei tarkkaan ottaen ole kyse suojauksen suoranaisesta vaikutuksesta,
koska periaatteessa hävitysoikeus riippuu sen hakemiston suojauksesta,
jossa tiedosto on. Mutta käytännössä rm
-komento tarkistaa
lisäksi tiedoston suojauksen ja kysyy käyttäjältä varmistuksen.)
epsilon koe 51 % ls -l huuhaa -r--r--r-- 1 jkorpela staff 0 Feb 20 11:28 huuhaa epsilon koe 52 % rm huuhaa rm: override protection 444 for huuhaa? y epsilon koe 53 % ls -l huuhaa huuhaa not found epsilon koe 54 %