Tiedosto-oikeudet
Tämä kirjoitus kertoo Linuxin tavasta hallita käyttäjien oikeuksia
käsitellä tiedostoja. Esimerkit on tehty Red Hat Linuxin versiolla 7.2,
mutta eroja muihin Linux-jakelupaketteihin ei pitäisi käytännössä olla,
ja teksti sopii lähes sellaisenaan myös muiden Unix-tyyppisten
järjestelmien käytännön kuvaamiseen.
Teksti etenee esimerkkien kautta. Esimerkit edellyttävät, että sinulla
on pääkäyttäjän oikeudet koneellesi. Tekstissä käytetään muutamia
peruskomentoja joita ei selitetä, mutta muutoin on pyritty vääntämään
asia paksusta rautalangasta tekstin tiiviyden kustannuksella. Tätä
tekstiä ei kannata pelkästään lukea, vaan myös kokeilla komentoja itse.
Sisällys
Alkuvalmistelu: käyttäjien ja ryhmien luonti
Aloitetaan luomalla käyttäjät aku, iines ja mikki.
Tehdään sitten ryhmä miehet, johon tulevat aku ja mikki, sekä ryhmä
ankat, johon tietysti
kuuluvat aku ja iines. Anna komennot rootin tunnuksella.
[root@kone root]# adduser aku
[root@kone root]# adduser iines
[root@kone root]# adduser mikki
[root@kone root]# groupadd miehet
[root@kone root]# groupadd ankat
[root@kone root]# gpasswd -a aku ankat
Adding user aku to group ankat
[root@kone root]# gpasswd -a iines ankat
Adding user iines to group ankat
[root@kone root]# gpasswd -a aku miehet
Adding user aku to group miehet
[root@kone root]# gpasswd -a mikki miehet
Adding user mikki to group miehet
Halutessasi voit nyt tarkistaa, että käyttäjät ja ryhmät todella on luotu
katsomalla tiedostojen /etc/passwd ja /etc/group
loppua:
[root@kone root]# tail -3 /etc/passwd
aku:x:504:505::/home/aku:/bin/bash
iines:x:505:506::/home/iines:/bin/bash
mikki:x:506:507::/home/mikki:/bin/bash
[root@kone root]# tail -2 /etc/group
miehet:x:508:aku,mikki
ankat:x:509:aku,iines
Luvut riippuvat siitä, montako käyttäjää ja ryhmää testikoneessa
entuudestaan on.
Uusille käyttäjille tarvitaan salasanat. Komennolla
passwd aku voit
asettaa akun salasanan, ja tietysti muille käyttäjille salasanat tulevat
vastaavasti.
Kirjaudu sisään tunnuksella aku ja siirry hakemistoon /tmp
cd-komennolla. Anna komento
umask 777
(Komennon merkitys selitetään myöhemmin, älä
mieti sitä vielä.) Luo tiedosto kirje.txt esimerkiksi
komennolla
echo "Hei Iines" > kirje.txt
Tuloksena on tiedosto, jota ei edes
aku itse voi käsitellä. Katsotaan tiedostolistaus:
[aku@kone tmp]$ ls -l kirje.txt
---------- 1 aku aku 10 syys 15 15:23 kirje.txt
Ja yritetään tulostaa tiedoston sisältö:
[aku@kone tmp]$ cat kirje.txt
cat: kirje.txt: Permission denied
Lukuoikeus annetaan chmod-komennolla:
[aku@kone tmp]$ chmod u=r kirje.txt
[aku@kone tmp]$ ls -l kirje.txt
-r-------- 1 aku aku 36 syys 15 15:30 kirje.txt
[aku@kone tmp]$ cat kirje.txt
Hei Iines
Esimerkin chmod-komento tarkoittaa "aseta
tiedoston omistajalle oikeus lukea
tiedostoa, mutta ei mitään muuta oikeutta". Lukuoikeuden näkee
r-kirjaimesta
tiedostolistauksessa. cat-komento tulostaa
tiedoston nyt, kun lukuoikeus
on annettu.
Yritetään lisätä rivi tiedostoon:
[aku@kone tmp]$ echo "Olen pohtinut suhdettamme" >> kirje.txt
bash: kirje.txt: Permission denied
Lisätään kirjoitusoikeuskin:
[aku@kone tmp]$ chmod u=rw kirje.txt
[root@kone tmp]# ls -l kirje.txt
-rw------- 1 aku aku 36 syys 15 15:30 kirje.txt
[aku@kone tmp]$ echo "Olen pohtinut suhdettamme" >> kirje.txt
[aku@kone tmp]$ cat kirje.txt
Hei Iines
Olen pohtinut suhdettamme
Mahdollista on myös antaa tiedostolle pelkästään kirjoitusoikeus, vaikka
tätä ei käytännössä paljonkaan käytetä. Esimerkin vuoksi, kokeilkaamme:
[aku@kone tmp]$ chmod u=w kirje.txt
[aku@kone tmp]$ ls -l kirje.txt
--w------- 1 aku aku 36 syys 15 15:30 kirje.txt
[aku@kone tmp]$ echo "ja tullut siihen tulokseen" >> kirje.txt
[aku@kone tmp]$ cat kirje.txt
cat: kirje.txt: Permission denied
Nyt tarvitaan ohjelmatiedosto, ja sopiva sellainen on pwd,
joka vain tulostaa työhakemiston. Kopioidaan se vaikka nimelle "tyohak".
[aku@kone tmp]$ cp /bin/pwd tyohak
[aku@kone tmp]$ ls -l tyohak
---------- 1 aku aku 10428 syys 5 13:29 tyohak
Yritetään ajaa ohjelma, lisätään suoritusoikeus ja yritetään uudelleen.
[aku@kone tmp]$ ./tyohak
bash: ./tyohak: Permission denied
[aku@kone tmp]$ chmod u=x tyohak
[aku@kone tmp]$ ls -l tyohak
---x------ 1 aku aku 10428 syys 5 13:29 tyohak
[aku@kone tmp]$ ./tyohak
/tmp
Ohjelmatiedoston sisältöä ei silti pysty tulostamaan, kokeile vaikka
less-komennolla. (Ohjelmatiedosto näyttää
epämääräiseltä mössöltä, ja joskus sen tulostaminen
cat-komennolla sekoittaa konsolin merkistön,
siksi less-komento on parempi.) Kokeile
lisätä lukuoikeus (u=rx) ja varmista vielä, että lukuoikeus
ja suoritusoikeus ovat toisistaan
riippumattomia. Myös kirjoitusoikeus on erillinen oikeus; sitäkin voit
kokeilla, mutta muutetun ohjelmatiedoston ajaminen ei ole hyvä idea.
Tässä vaiheessa siis näet, että pitkän tiedostolistauksen alussa olevan
kymmenen merkin toinen, kolmas ja neljäs merkki kuvaavat luku-, kirjoitus-
ja suoritusoikeuksia kirjaimilla r, w ja x.
Seuraavana vuorossa: oikeudet hakemistoille. Jotta Linuxin käyttö ei olisi
liian helppoa, on hakemistoilla samat r-, w- ja x-oikeudet, mutta niiden
merkitys on aivan muu kuin tiedostoilla. Aloitetaan tekemällä hakemisto
kirjeet, ja vaihteeksi edetään toisinpäin poistamalla oikeuksia.
[aku@kone tmp]$ mkdir kirjeet
[aku@kone tmp]$ chmod u=rwx kirjeet/
[aku@kone tmp]$ ls -ld kirjeet
drwx------ 2 aku aku 1024 syys 15 16:08 kirjeet
Komento ls toimii normaalisti niin, että
ls xx näyttää tiedoston
xx, jos xx on tiedosto, ja hakemiston xx sisältämät tiedostot, jos xx on
hakemisto. d-valitsin muuttaa toimintaa niin, että tulostetaan pelkästään
hakemiston nimi eikä sisältöä.
Jos ensimmäinen merkki tiedostolistauksessa on d-kirjain, on kyse
hakemistosta eikä tavallisesta tiedostosta.
Luodaan hakemistoon kirje, annetaan sille luku- ja kirjoitusoikeus,
tulostetaan kirjeet-hakemiston sisältö ja vielä tulostetaan kirje:
[aku@kone tmp]$ echo "Moi Hessu" > kirjeet/hessulle.txt
[aku@kone tmp]$ chmod u=rw kirjeet/hessulle.txt
[aku@kone tmp]$ ls -l kirjeet
total 1
-rw------- 1 aku aku 10 syys 15 16:31 hessulle.txt
[aku@kone tmp]$ cat kirjeet/hessulle.txt
Moi Hessu
Poistamalla hakemistolta suoritusoikeus poistuu oikeus käsitellä
hakemiston joko suoraan tai alihakemistojen kautta sisältämiä tiedostoja.
Siis
[aku@kone tmp]$ chmod u=rw kirjeet
[aku@kone tmp]$ ls -ld kirjeet
drw------- 2 aku aku 1024 syys 15 16:31 kirjeet
[aku@kone tmp]$ cat kirjeet/hessulle.txt
cat: kirjeet/hessulle.txt: Permission denied
Jos taas suoritusoikeus on, mutta lukuoikeus puuttuu, niin...
[aku@kone tmp]$ chmod u=xw kirjeet
[aku@kone tmp]$ ls -ld kirjeet
d-wx------ 2 aku aku 1024 syys 15 16:31 kirjeet
[aku@kone tmp]$ cat kirjeet/hessulle.txt
Moi Hessu
[aku@kone tmp]$ ls -l kirjeet
ls: kirjeet: Permission denied
...hakemiston sisältämiä tiedostoja voi käsitellä, mutta hakemiston
sisältöä ei saa listattua. Käytännössä siis tiedoston käyttö onnistuu
vain, jos tiedoston nimen tietää etukäteen. (Tosin mikään ei estä
kokeilemasta järjestyksessä cat aaa, cat aab,
cat aac ... cat zzz. Aikaa
saattaa kyllä kulua aika kauan.)
Uusia tiedostoja saa tehdä (ja vanhoja poistaa) hakemistoon, johon on
kirjoitusoikeus ja suoritusoikeus. Kokeilemme:
[aku@kone tmp]$ chmod u=rwx kirjeet
[aku@kone tmp]$ ls -ld kirjeet
drwx------ 2 aku aku 1024 syys 15 16:31 kirjeet
[aku@kone tmp]$ echo "Moi Minni" > kirjeet/minnille.txt
[aku@kone tmp]$ chmod u=rx kirjeet
[aku@kone tmp]$ ls -ld kirjeet
dr-x------ 2 aku aku 1024 syys 15 16:41 kirjeet
[aku@kone tmp]$ echo "Moi Iines" > kirjeet/iinekselle.txt
bash: kirjeet/iinekselle.txt: Permission denied
Nyt päästään vihdoin asiaan. Kuten noin 7000 merkkiä sitten muistat,
luotiin aluksi ryhmä ankat, johon tuli käyttäjät aku ja iines.
Red Hat Linux toimii niin, että jokainen käyttäjä kuuluu omaan
henkilökohtaiseen ryhmäänsä. Siksi tiedostolistauskin näyttää
käyttäjätunnuksen kahteen kertaan:
---------- 1 aku aku 10 syys 1 21:54 kirje.txt
Vaihdetaan tiedoston ryhmäksi ankat komennolla
chgrp, ja annetaan ryhmälle lukuoikeus
sekä akulle itselleen luku- ja kirjoitusoikeus:
[aku@kone tmp]$ chgrp ankat kirje.txt
[aku@kone tmp]$ chmod g=r kirje.txt
[aku@kone tmp]$ chmod u=rw kirje.txt
[aku@kone tmp]$ ls -l kirje.txt
-rw-r----- 1 aku ankat 10 syys 1 21:54 kirje.txt
Kirjaudu toisista virtuaalikonsoleista tunnuksilla iines ja mikki ja
kokeile miten tiedostoa voi käsitellä:
[iines@kone tmp]$ cat kirje.txt
Hei Iines
[iines@kone tmp]$ echo "Tekstiä kirjeeseen" > kirje.txt
bash: kirje.txt: Permission denied
[mikki@kone tmp]$ cat kirje.txt
cat: kirje.txt: Permission denied
Siis: ankat-ryhmään kuuluu akun lisäksi iines, ja ryhmälle on annettu
chmod-komennolla lukuoikeus (siis g=group
ja r=read), mutta ei
kirjoitusoikeutta. Siksi iines voi lukea tiedoston sisällön ja vaikka
kopioida sen itselleen vaan ei kirjoittaa tiedostoon. Mikillä ei ole
mitään asiaa käpälöidä tiedostoa.
Tiedostolla on aina tasan yksi ryhmä, samaa tiedostoa ei aku siis voi
antaa sekä ankat- että miehet-ryhmän käsiteltäväksi.
Tiedoston omistajan ja ryhmän lisäksi oikeuksia voi antaa myös kaikille
käyttäjille. Jos esimerkiksi aku ja mikki kirjoittavat yhdessä julistusta
miesten sorsimisesta, ja pitävät jutun kirjoitusaikanakin kaikkien
luettavissa, se onnistuu näin:
[aku@kone tmp]$ echo "Miesten asema nykyään:" > julistus.txt
[aku@kone tmp]$ chgrp miehet julistus.txt
[aku@kone tmp]$ chmod u=rw julistus.txt
[aku@kone tmp]$ chmod g=rw julistus.txt
[aku@kone tmp]$ chmod o=r julistus.txt
[aku@kone tmp]$ ls -l julistus.txt
-rw-rw-r-- 1 aku miehet 23 syys 1 22:08 julistus.txt
Viimeisessä chmod-komennossa o-kirjain tulee
sanasta "others", siis "muut". Nyt tiedostoon voivat kirjoittaa aku ja mikki,
ja iines (ja kaikki muutkin koneen käyttäjät) voivat lukea tiedostoa.
Kokeile!
Tiedostolistauksessa näkyy siis alussa kymmenen merkkiä. Ensimmäinen
kuvaa tiedoston tyyppiä, viiva tarkoittaa tiedostoa ja d-kirjain
hakemistoa, ja loput yhdeksän merkkiä jakautuvat kolmeen ryhmään, joista
kussakin on kolme merkkiä. Ensimmäinen kolmikko kuvaa omistajan itsensä
oikeuksia tiedostoon, toinen kolmikko ryhmän oikeuksia ja viimeinen
kolmikko kaikkien oikeuksia. Jokaisessa ryhmässä samat oikeudet
merkitään kirjaimilla r,w ja x.
Kaikki mitä aiemmin opit suoritusoikeuksista ja hakemistojen oikeuksista
pätee yhä. Esimerkiksi aku voi lukea tiedoston /tmp/aa/bee/cee.txt
sisällön, jos hakemistolla /tmp on kaikille suoritusoikeus,
hakemiston /tmp/aa ryhmä on miehet ja ryhmällä on suoritusoikeus,
hakemiston /tmp/aa/bee ryhmä on ankat ja ryhmällä on
suoritusoikeus, ja tiedoston cee.txt omistaja on aku ja
akulla on lukuoikeus tiedostoon. Monimutkaista? Ei
oikeastaan, mutta kannattaa oikeasti harjoitella kunnes tuntee osaavansa
asian. Kokeillessa kannattaa kirjautua sisään useista virtuaalikonsoleista
eri tunnuksilla ja sanoa aina ensimmäisenä umask 777.
(Usko pois, kyllä se umask-komentokin
vielä selitetään. :=) )
Hakemistojen suoritusoikeus (x) on helpoin mieltää
kauttakulkuoikeudeksi: tarvitset suoritusoikeuden jokaiseen
käsiteltävän tiedoston polussa olevaan hakemistoon.
Edellä on käytetty chmod-komennosta
vain muotoa, joka asettaa oikeudet.
On mahdollista käyttää myös plusmerkkiä oikeuden lisäämiseen ja
miinusmerkkiä oikeuden poistamiseen. On mahdollista antaa yhdellä
kertaa oikeuksia sekä omistajalle, ryhmälle että muille. Lisäksi
a-kirjain tarkoittaa "all" eli kaikkia. Esimerkki valaissee parhaiten:
[aku@kone tmp]$ ls -l julistus.txt
-rw-rw-r-- 1 aku miehet 23 syys 1 22:08 julistus.txt
[aku@kone tmp]$ chmod g-w julistus.txt
[aku@kone tmp]$ ls -l julistus.txt
-rw-r--r-- 1 aku miehet 23 syys 1 22:08 julistus.txt
[aku@kone tmp]$ chmod a=w julistus.txt
[aku@kone tmp]$ ls -l julistus.txt
--w--w--w- 1 aku miehet 23 syys 1 22:08 julistus.txt
[aku@kone tmp]$ chmod u+r,go-w julistus.txt
[aku@kone tmp]$ ls -l julistus.txt
-rw------- 1 aku miehet 2 syys 5 12:30 julistus.txt
chmod tuntee valitsimen -r,
pidemmälti sanottuna --recursive. Se
tarkoittaa, että oikeudet muutetaan kaikkien alihakemistojenkin
tiedostoihin. Sama valitsin toimii myös
chgrp-komennossa.
chmod tuntee vielä myös ison X-kirjaimen.
Se tarkoittaa suoritusoikeutta
kaikille hakemistoille ja niille tiedostoille, joilla jo suoritusoikeus on.
Käytännössä root testaa ensin jonkun hakemiston haaran toiminnan ja sanoo
sitten
chmod --recursive a+rX hakemistonnimi
jolloin kaikille tulee oikeus lukea tiedostoja ja listata kaikkien
tiedostojen sisältö, sekä oikeus ajaa kaikkia niitä
ohjelmatiedostoja, joihin suoritusoikeus oli.
Vain omistamansa tiedoston ryhmän voi vaihtaa, ja ryhmäksi voi laittaa
vain sellaisen ryhmän, jonka jäsen on. Siis aku voi vaihtaa vain omien
(eli yleensä itse luomiensa) tiedostojen oikeuksia, ja vain ryhmiin
ankat tai miehet, Red Hat Linuxin tapauksessa myös ryhmään aku. root
on kuitenkin aina kaikkivaltias, ja voi vaihtaa minkä tahansa tiedoston
ryhmän miksi tahtoo, ja voi myös vaihtaa kaikkien tiedostojen oikeuksia.
chown-komennolla voi vaihtaa tiedoston
omistajan. Komentoa voi käyttää
vain root. Samalla komennolla voi vaihtaa sekä omistajan että ryhmän
erottamalla ne pisteellä. Esimerkki:
[root@kone tmp]# ls -l kirje.txt julistus.txt
-rw-r----- 1 aku ankat 10 syys 1 21:54 kirje.txt
-rw-rw-rw- 1 mikki miehet 23 syys 1 22:08 julistus.txt
[root@kone tmp]# chown iines kirje.txt
[root@kone tmp]# chown aku.ankat julistus.txt
[root@kone tmp]# ls -l kirje.txt julistus.txt
-rw-r----- 1 iines ankat 10 syys 1 21:54 kirje.txt
-rw-rw-rw- 1 aku ankat 23 syys 1 22:08 julistus.txt
Jos ihmisellä olisi kahdeksan sormea, niin käyttäisimme kai numeroita
nollasta seitsemään. Kahdeksanlukujärjestelmä sopii kivasti kolmen
kyllä/ei -arvon esittämiseen: kun määritellään r-oikeuden arvoksi
neljä, w-oikeuden arvoksi kaksi ja x-oikeuden arvoksi yksi, saadaan
summaksi luku nollasta seitsemään. Kolmella tällaisella luvulla
saadaan kuvattua kaikki oikeudet, ja chmod
hyväksyy numeroarvotkin.
Esimerkiksi omistajalle luku- ja suoritusoikeus tekee neljä ynnä
yksi tekee viisi, ryhmälle kirjoitusoikeus tekee kaksi ja muille
ei mitään oikeuksia tekee nolla, eli:
[aku@kone tmp]$ chmod 520 kirje.txt
[aku@kone tmp]$ ls -l kirje.txt
-r-x-w---- 1 aku aku 4 syys 1 22:53 kirje.txt
Numeroarvot ovat epäkäteviä, mutta
umask-komento toimii vain numeroilla.
Umask tarkoittaa mitä oikeuksia luotavat tiedostot oletusarvoisesti
eivät saa. umask 777 tarkoittaa
ettei tiedostoille tule mitään
oikeuksia kenelläkään, ja esimerkiksi aika käyttökelpoinen
umask 027
antaa oletusarvoisesti tiedoston omistajalle kaikki oikeudet (0=ei
mitään, siis jää kaikki) ja ryhmälle luku- ja suoritusoikeuden
(2=kirjoitus, siis jää luku ja suoritus) ja muille ei mitään
(7=1+2+4=kaikki, siis ei jää mitään).
Jälleen kerran: kokeile! Vaihda umask, luo uusi tiedosto ja katso mitä
oikeuksia se saa. Antamalla pelkän umask-komennon
näet mikä on maskin arvo tällä hetkellä.
Edelliset kappaleet olivat huijausta. Oikeasti
umask toimii myös
symbolisessa muodossa, kokeile vaikka komentoa
umask -S u=rwx,g=rx,o=
Sen sijaan esimerkiksi samban (palvelu, joka jakaa Linux-palvelimen levyjä
windows-työasemille) asetustiedostoon umask-arvot pitää syöttää
oktaalinumeroina.
Edellä tuli kerrottua "tavalliset" oikeudet. Lisäksi on vielä kolme
erikoisempaa oikeutta.
Normaalisti käyttäjän oikeudet periytyvät käynnistettäville ohjelmille,
eli ellei akulla ole lukuoikeutta tiedostoon, ei mikään akun käynnistämä
ohjelmakaan tiedostoa voi lukea. setuid-oikeus tarkoittaa, että
ohjelmatiedosto suoritetaan tiedoston omistajan oikeuksilla. Asia on
helpoin esittää esimerkillä.
Aloitetaan tekemällä ohjelma "tulosta", joka tulostaa ensimmäisen
merkin hakemiston /tmp/aku sisältämästä tiedostosta. Kopioi
seuraava ohjelma tiedostoon nimeltä tulosta.c++
#include <fstream.h>
#include <string.h>
int main(int argc, char * argv[]) {
char tiedostonnimi[100]="/tmp/aku/";
int polunpituus=strlen("/tmp/aku/");
if (argc < 2) {
cout << "Virhe. Anna tiedostonnimi.\n";
}
else {
if (strlen(argv[1]) >= 100-polunpituus) {
cout << "Virhe. Anna lyhyempi tiedostonnimi.\n";
}
else {
strcpy(tiedostonnimi+polunpituus, argv[1]);
ifstream tiedosto(tiedostonnimi);
if (tiedosto.good())
{
char merkki;
tiedosto >> merkki;
cout << merkki << "\n";
}
else {
cout << "Virhe. Tiedostoa ei löydy tai ei voi lukea.\n";
}
}
}
}
Vaihda ensin umask, jotta kääntäjä voi lukea väliaikaisia tiedostojaan.
Käännä tulosta.c++ g++ -komennolla, jolloin
tuloksena on ajettava ohjelma
nimeltään "tulosta". Tee hakemisto "aku" ja laita hakemistoon
tiedosto, jonka sisältönä on vaikka "xyz".
[aku@kone tmp]$ umask 077
[aku@kone tmp]$ g++ -o tulosta tulosta.c++
[aku@kone tmp]$ mkdir aku
[aku@kone tmp]$ echo "xyz" > aku/jee
[aku@kone tmp]$ ls -l aku/jee
-rw------- 1 aku aku 4 syys 5 15:45 aku/jee
Anna tulosta-ohjelmalle suoritusoikeus kaikille käyttäjille ja kokeile
ohjelman toimintaa eri käyttäjätunnuksilla. Lisää sitten setuid-oikeus
ja kokeile uudelleen:
[aku@kone tmp]$ chmod a+x tulosta
[aku@kone tmp]$ ./tulosta jee
x
[iines@kone tmp]$ ./tulosta jee
Virhe. Tiedostoa ei löydy tai ei voi lukea.
[aku@kone tmp]$ chmod u+s tulosta
[aku@kone tmp]$ ls -l tulosta
-rws--x--x 1 aku aku 15791 syys 5 15:44 tulosta
[iines@kone tmp]$ ./tulosta jee
x
Siis nyt ohjelma "tulosta" suoritetaan aina käyttäjän "aku" oikeuksilla,
ja ohjelma voi siis lukea ja kirjoittaa niitä tiedostoja joihin akulla on
oikeus, siirtyä vastaavasti hakemistoihin jne, ja ohjelman mahdollisesti
edelleen käynnistämät ohjelmat saavat myös samat oikeudet. Edelläoleva
esimerkki on tyhmä, mutta osoittaa perusidean: käyttäjä voi sallia
tiedostojen käytön muille jollain rajatulla tavalla.
setuid on vaarallinen! Mitä tapahtuu, jos iines käyttää
komentoa
/tmp/tulosta ../../home/aku/salainen-tiedosto ?
Käytännössä setuid-oikeutta käyttää lähinnä root. Esimerkiksi tiedostoihin
/etc/passwd ja /etc/shadow pääsee kirjoittamaan
vain root,
[aku@kone tmp]$ ls -l /etc/passwd /etc/shadow
-rw-r--r-- 1 root root 1352 syys 15 15:18 /etc/passwd
-rw------- 1 root root 1202 syys 15 15:18 /etc/shadow
mutta käyttäjienhän pitää päästä vaihtamaan oma salasanansa. Se onnistuu,
sillä passwd-ohjelmalla on setuid-oikeus
päällä:
[aku@kone tmp]$ ls -l /usr/bin/passwd
-r-s--x--x 1 root root 13476 elo 7 07:03 /usr/bin/passwd
passwd-ohjelma taas rajoittaa toimintaa niin, että jokainen käyttäjä voi
vaihtaa vain oman salasanansa. Jos passwd-ohjelmasta löytyisi sopiva virhe,
niin käyttäjät voisivat vaikka vaihtaa rootin salasanan, ja päästä näin
tuhoamaan koko järjestelmän! Voit kokeilla itsekin setuid-bittiä tässä:
[root@kone tmp]# chmod u-s /usr/bin/passwd
[root@kone tmp]# ls -l /usr/bin/passwd
-r-x--x--x 1 root root 13476 elo 7 07:03 /usr/bin/passwd
[mikki@kone tmp]$ passwd
passwd: Authentication token manipulation error
[root@kone tmp]# chmod u+s /usr/bin/passwd
[mikki@kone tmp]$ passwd
Changing password for mikki
(current) UNIX password:
Aivan samoin kuin setuid-oikeus toimii myös setgid-oikeus, joka tekee
ohjelman ajettavaksi ryhmän oikeuksilla. Kokeile tätäkin itse, komento on
chmod g+s
Mikään ei estä antamasta samalle ohjelmalle sekä setuid- että
setgid-oikeuksia.
setuid ja setgid eivät toimi
shell-skripteillä. Syy tähän on turvallisuus, shell-skriptiä olisi
liian helppo väärinkäyttää. (Kun ohjelma alkaa #!/bin/bash
se suoritetaan käynnistämällä ensin bash ja sitten bash lukee
shelliskriptin ja toimii sen mukaan. Tässä välissä voisi käyttäjä
vaihtaa skriptin sisältöä (onnistuu sopivalla symbolisella linkillä), ja
pääsisi suorittamaan omaa koodiaan jonkun toisen tunnuksilla.)
(setgid-oikeus ilman suoritusoikeutta ryhmälle
tarkoittaa mandatory lockingia, aihetta ei käsitellä tässä.)
Ohjelmatiedostolle voi asettaa kolmannenkin erikoisoikeuden, ns.
sticky bitin eli tahmabitin, komennolla
chmod o+t tiedostonnimi
mutta Linuxissa se ei vaikuta mitään, vaikka ainakin Reh Hat Linuxin
sisältämä chmod-komennon manuaalisivu niin väittääkin.
Ohjelmakoodia ei siirretä sivutustiedostoon muistin loppuessa
samalla tavoin kuin dataa, ohjelmakoodihan voidaan aina ladata levyltä
uudelleen. t-bitti ohjelmatiedostossa muuttaa tätä joissakin Unixeissa
niin että ohjelmakoodikin voidaan sivuttaa. Tästä olisi teoreettista
hyötyä jos ohjelma sijaitsisi hitaalla levyllä ja sivutustiedosto nopealla
levyllä, mutta Linux siis ei ominaisuutta tue.
Kuten "tavallisten" oikeuksienkin kohdalla, on hakemistoilla muodollisesti
samat erikoisoikeudet kuin tiedostoilla, mutta merkitys on aivan muu.
Hakemistollekin voi asettaa setuid-oikeuden, mutta se ei vaikuta
mitenkään.
setgid-oikeus hakemistolla tarkoittaa, että hakemistoon luotavat tiedostot
saavat saman ryhmän kuin hakemistolla on. Eli esimerkiksi:
[aku@kone tmp]$ mkdir juttuja
[aku@kone tmp]$ chgrp ankat juttuja
[aku@kone tmp]$ chmod 770 juttuja
[aku@kone tmp]$ ls -ld juttuja
drwxrwx--- 2 aku ankat 1024 syys 2 00:40 juttuja
[iines@kone tmp]$ echo "juu" > juttuja/ekajuttu
[aku@kone tmp]$ chmod g+s juttuja
[iines@kone tmp]$ echo "joo" > juttuja/tokajuttu
[iines@kone tmp]$ ls -l juttuja
total 2
-rw-rw-r-- 1 iines iines 4 syys 2 00:42 ekajuttu
-rw-rw-r-- 1 iines ankat 4 syys 2 00:43 tokajuttu
Setgid hakemistoille periytyy:
[iines@kone juttuja]$ mkdir alihakemisto
[iines@kone juttuja]$ ls -ld alihakemisto
drwxrwsr-x 2 iines ankat 1024 syys 2 00:45 alihakemisto
Lopuksi on vielä sticky bit, epävirallisesti suomennettuna tahmabitti,
hakemistoille. Se tarkoittaa, että vain
tiedoston omistaja saa poistaa tiedoston - normaalistihan kirjoitusoikeus
hakemistolle antaa oikeuden poistaa hakemistosta kaikkia tiedostoja.
Esimerkki:
[aku@kone tmp]$ mkdir tekstit
[aku@kone tmp]$ chgrp ankat tekstit
[aku@kone tmp]$ chmod 770 tekstit
[aku@kone tmp]$ echo "moi" > tekstit/eka
[aku@kone tmp]$ echo "hei" > tekstit/toka
[aku@kone tmp]$ chgrp ankat tekstit/*
[aku@kone tmp]$ ls -ld tekstit
drwxrwx--- 2 aku ankat 1024 syys 2 00:59 tekstit
[iines@kone tmp]$ cd tekstit
[iines@kone tekstit]$ ls -l
total 2
---------- 1 aku ankat 4 syys 2 00:59 eka
---------- 1 aku ankat 4 syys 2 00:59 toka
[iines@kone tekstit]$ rm eka
rm: remove write-protected file `eka'? y
[aku@kone tmp]$ chmod o+t tekstit
[aku@kone tmp]$ ls -ld tekstit
drwxrwx--T 2 aku ankat 1024 syys 2 01:00 tekstit
[iines@kone tekstit]$ rm toka
rm: remove write-protected file `toka'? y
rm: cannot unlink `toka': Operation not permitted
Katso juurihakemiston tiedostolistaus pitkässä muodossa
(ls -l /).
Millä hakemistolla on tahmabitti päällä? Miksi?
Tiedostolistauksessahan s- ja t-kirjain voi peittää x-kirjaimen. Jos
"alla" on oikeus päällä, näkyy s- tai t-kirjain pienenä, muutoin suurena.
Vielä esimerkki:
[aku@kone tmp]$ chmod g+x tulosta
[aku@kone tmp]$ ls -l tulosta
-rwxr-s--x 1 aku ankat 15341 syys 1 23:59 tulosta
[aku@kone tmp]$ chmod g-x tulosta
[aku@kone tmp]$ ls -l tulosta
-rwxr-S--x 1 aku ankat 15341 syys 1 23:59 tulosta
Unixissa kaikki on tiedostoja. Esimerkiksi tavallista korppuasemaa vastaa
tiedosto /dev/fd0 ja levykkeen alkua voi lukea komennolla
less -f /dev/fd0
ja tulostinportteja vastaavat tiedostot /dev/lp0,
/dev/lp1 ja /dev/lp2
ja tekstitiedoston saa tulostettua (yleensä) komennolla
cp tiedostonnimi /dev/lp0
Myös laitetiedostoilla on oikeudet, esimerkiksi
[aku@kone aku]$ ls -l /dev/hda /dev/lp0
brw-rw---- 1 root disk 3, 0 elo 30 23:30 /dev/hda
crw-rw---- 1 root lp 6, 0 elo 30 23:30 /dev/lp0
tarkoittaa, että vain root ja ryhmään disk kuuluvat käyttäjät voivat
käsitellä suoraan ensimmäisen IDE-väylän master-levyn (DOS/Win-puolella
C-aseman sisältävä levy) levypintaa, ja että root ja ryhmään lp
kuuluvat käyttäjät voivat kirjoittaa ja lukea tulostinporttia.
Yleensä näitä oikeuksia ei joudu muuttamaan. Eräs poikkeus on levykkeen
käsittely mtools-paketilla, joka onnistuu muiltakin kuin pääkäyttäjältä
kun joko annetaan /dev/fd0 -laitetiedostolle sopivat oikeudet tai
asetetaan setuid-bitti paketin sisältämille ohjelmille.
Tiedostolistauksen alussa näkyvä b-kirjain tarkoittaa lohkolaitetta
(engl. block device) ja c-kirjain merkkilaitetta (engl. character
device). Lohkolaite lukee ja kirjoittaa aina kerralla esimerkiksi
512 tai 1024 tavun lohkon, merkkilaite käsittelee yksittäisiä merkkejä.
Oikeuksien kannalta erolla ei ole merkitystä, luku- ja kirjoitusoikeus
sekä käyttäjä ja ryhmä määritellään samalla tavoin.
Laitetiedostoilla on muodollisesti myös suoritusoikeus sekä
setuid- ja setgid-oikeudet sekä tahmabitti, ja nämä oikeudet voidaan
myös antaa chmod-komennolla. Niillä ei kuitenkaan ole mitään vaikutusta,
sillä laitetiedostoa ei voi suorittaa.
On olemassa myös nimettyjä putkia (engl. named pipe), jotka merkitään
tiedostolistauksessa p-kirjaimella, ja unix domain socketteja (suomennos??),
joilla vastaava kirjain on s. Niitä ei käsitellä tässä enempää,
mutta oikeudet määritellään niillekin samoin kuin laitetiedostoille.
Käyttäjällä ja ryhmällä on yleensä vastine reaalimaailmassa, vaikka
Ville Virtanen ja palkanlaskennan henkilökunta. Jonkin verran käytetään
myös pseudokäyttäjiä kuten "mail" ja "news", joilla voidaan säädellä
tarkemmin mitä jotkut ohjelmat saavat tehdä. Pseudoryhmiä ovat
esimerkiksi yllä näkyvät "disk" ja "lp".
Kova linkki on toinen nimi samalle tiedostolle. Sen oikeuksien, omistajan
tai ryhmän muuttaminen muuttaa vastaavasti alkuperäistä tiedostoa.
Symbolisen linkin oikeudet ovat aina kaikki-kaikille, mutta oikeudet
tarkistetaan linkin kohteesta. Symbolisella linkillä voi olla eri
omistaja ja ryhmä kuin alkuperäisellä tiedostolla. Esimerkki:
[aku@kone tmp]$ echo "moi" > kirje.txt
[aku@kone tmp]$ ln kirje.txt kovalinkki
[aku@kone tmp]$ ln -s kirje.txt symbolinkki
[aku@kone tmp]$ ls -l kirje.txt kovalinkki symbolinkki
-rw-rw-r-- 2 aku aku 4 syys 5 11:31 kirje.txt
-rw-rw-r-- 2 aku aku 4 syys 5 11:31 kovalinkki
lrwxrwxrwx 1 aku aku 9 syys 5 11:31 symbolinkki -> kirje.txt
[aku@kone tmp]$ chmod g-w kovalinkki
[aku@kone tmp]$ chgrp ankat kovalinkki
[aku@kone tmp]$ chgrp miehet symbolinkki
[aku@kone tmp]$ ls -l kirje.txt kovalinkki symbolinkki
-rw-r--r-- 2 aku ankat 4 syys 5 11:31 kirje.txt
-rw-r--r-- 2 aku ankat 4 syys 5 11:31 kovalinkki
lrwxrwxrwx 1 aku miehet 9 syys 5 11:31 symbolinkki -> kirje.txt
Jotta käyttöoikeuksia voidaan rajoittaa, pitää tiedostojärjestelmän
tukea sitä. Esimerkiksi MS-DOSin käyttämä FAT ei tue.
mount-komennolla
on kuitenkin mahdollista kertoa mitä FAT-osion tiedostojen käyttäjäksi,
ryhmäksi ja oikeuksiksi halutaan. Seuraava esimerkki tuhoaa levykkeen
sisällön:
[root@kone root]# mkfs.vfat /dev/fd0
mkfs.vfat 2.7 (14 Feb 2001)
[root@kone root]# mount -t vfat -o uid=aku,gid=ankat,umask=027 /dev/fd0 /mnt/floppy/
[root@kone root]# echo "testi" > /mnt/floppy/test.txt
[root@kone root]# ls -l /mnt/floppy/
total 1
-rwxr-x--- 1 aku ankat 6 syys 4 21:39 test.txt
[root@kone root]# umount /mnt/floppy/
[root@kone root]# mount -t vfat -o uid=iines,umask=007 /dev/fd0 /mnt/floppy/
[root@kone root]# ls -l /mnt/floppy/
total 1
-rwxrwx--- 1 iines root 6 syys 4 21:39 test.txt
[root@kone root]# umount /mnt/floppy/
Ensin siis liitettiin /dev/fd0 hakemistorakenteeseen niin,
että kaikki sen tiedostot saivat käyttäjän aku, ryhmän ankat ja tietyt
oikeudet. Kun /dev/fd0 irrotettiin ja liitettiin uudelleen
eri valitsimilla,
niin tiedostolla näkyi eri omistaja ja ryhmä. Tämä osoittaa, että
FAT-osiolle ei todellakaan tallenneta tiedoston oikeuksia, ryhmää ja
omistajaa.
Oletusarvoisesti mount-komento ottaa sen
käyttäjän ja ryhmän joka
komentoa käyttää ja oikeudet voimassa olevasta umask-arvosta.
Tarkkaan ottaen sekä tiedostojärjestelmän että sitä vastaavan
ajurin pitää tukea oikeuksia. Esimerkiksi Windows NT:n käyttämä NTFS
tukee oikeuksia pitkälti Linuxin tapaan, mutta ajuri ei.
Se, että Aku ei voi lukea Iineksen tiedostoja, johtuu vain siitä että
Linuxin ydin estää sen. Tiedostoja ei silti ole mitenkään salattu, ja
ne voidaan lukea esimerkiksi käynnistämällä kone levykkeeltä, jossa on
Linux, jonka rootin salasana tiedetään.
Todellisuudessa tiedostojärjestelmä ei talleta merkkijonoa "aku" vaan
esimerkiksi luvun 504. Lukua vastaava käyttäjätunnus haetaan tiedostosta
/etc/passwd. Samoin ryhmä tallennetaan lukuna, ja vastaava
selväkielinen nimi löytyy tiedostosta /etc/group. Tällä on
merkitystä silloin, kun kiintolevy siirretään toiseen koneeseen tai samaa
levyosiota käytetään saman koneen kahdesta täysin erillisestä
Linux-asennuksesta käsin.
mount-komennon -r -valitsin
liittää tiedostojärjestelmän ilman
kirjoitusoikeutta. Komennon -o -valitsimella voidaan lisäksi
valita optio noexec, jolloin ohjelmatiedostoja ei voi suorittaa,
tai nosuid, jolloin setuid ja setgid -oikeudet jätetään
huomiotta. Otetaan
esimerkki, joka jälleen tuhoaa levykkeen sisällön. Ensin tehdään
korpulle ext2-tiedostojärjestelmä ja siirretään sinne pari aiemmin
luotua tiedostoa:
[root@kone root]# mkfs.ext2 /dev/fd0
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09
. . .
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@kone root]# mount -t ext2 /dev/fd0 /mnt/floppy/
[root@kone root]# cp /tmp/tulosta /mnt/floppy/
[root@kone root]# cp /tmp/tyohak /mnt/floppy/
[root@kone root]# cp /tmp/akun-teksti /mnt/floppy/
[root@kone root]# chown aku.aku /mnt/floppy/akun-teksti
[root@kone root]# chmod u=rw,go= /mnt/floppy/akun-teksti
[root@kone root]# chmod a=rx /mnt/floppy/tyohak
[root@kone root]# chown aku.aku /mnt/floppy/tulosta
[root@kone root]# chmod u=rxs,go=rx /mnt/floppy/tulosta
[root@kone root]# ls -l /mnt/floppy/
total 44
-rw------- 1 aku aku 4 syys 4 22:15 akun-teksti
drwxr-xr-x 2 root root 12288 syys 4 22:08 lost+found
-r-xr-xr-x 1 root root 13715 syys 4 22:13 tyohak
-r-sr-xr-x 1 aku aku 15341 syys 4 22:10 tulosta
[root@kone root]# umount /mnt/floppy
Kokeillaan ensin estää kirjoitus ja ohjelmien suorittaminen:
[root@kone root]# mount -r -t ext2 -o noexec /dev/fd0 /mnt/floppy/
[aku@kone floppy]$ echo "Jee" > akun-teksti
bash: akun-teksti: Read-only file system
[aku@kone floppy]$ ./tulosta
bash: ./tulosta: Permission denied
Ja sitten katsotaan vielä miten nosuid vaikuttaa. Vaihda ensin akun
työhakemistoksi joku muu kuin /mnt/floppy, jotta voit irrottaa
korpun hakemistopuusta.
[root@kone root]# umount /mnt/floppy/
[root@kone root]# mount -t ext2 -o nosuid /dev/fd0 /mnt/floppy/
[iines@kone floppy]$ ./tyohak
/mnt/floppy
[iines@kone floppy]$ ./tulosta jee
Virhe. Tiedostoa ei löydy tai ei voi lukea.
Viimeisen esimerkin tulosta-ohjelma kyllä suoritetaan, mutta komennon
setuid-oikeus ei vaikuta mitenkään, ja tunnuksella iines ei ole
oikeutta lukea tiedostoa /tmp/aku/jee. Tarkista itse kokeilemalla,
että -o nosuid estää myös setgid-oikeuden toiminnan.
Huomaa, että tiedostolistaus näyttää kyllä setuid-oikeuden ja muutkin
oikeudet aivan normaalisti, ja näitä oikeuksia voi myös muuttaa (paitsi
jos käytettiin -r -valitsinta mount-komennossa), mutta niillä ei ole
mitään vaikutusta.
-o nosuid vaikuttaa vain tiedostoihin. Hakemistoihin (joilla
setgid tarkoitti aivan muuta kuin tiedostoilla) ei nosuidilla ole mitään
vaikutusta.
Oikeasti noexec ei juurikaan estä ohjelmien suorittamista. Käyttäjä
voi kopioida ohjelman jollekin laitteelle jossa -o noexec
-vipua ei ole käytetty, ja vaikkei tämä onnistuisi voi käyttäjä sanoa
/lib/ld-linux.so.2 ohjelma, jolloin ld-linux.so.2 ajaa
ohjelman. Sitäpaitsi ohjelmien ajamisen rajoittaminen ei ole muutenkaan
Linuxissa luontevaa, Linuxin tapa on rajoittaa ohjelmien käyttämien
tiedostojen ja hakemistojen oikeuksia.
Käyttäjät saa poistettua userdel-komennolla.
Sano roottina
userdel -r aku
jolloin käyttäjätunnuksen
lisäksi poistuu myös
akun kotihakemisto. groupdel ankat poistaa
ankat -ryhmän. Muista
poistaa myös ryhmät aku, iines ja mikki, jotka ovat ryhmiä joissa
on vain vastaava käyttäjä itse. /tmp -hakemisto siivoutuu
automaattisesti seuraavassa bootissa.
(Päivitys) ACL:t ja SELinux
Tämän kirjoittamisen jälkeen Linuxiin on tullut ACL-tuki ja SELinux.
Kumpikin ansaitsisi oman juttunsa, tässä oleva selitys on erittäin
pintapuolinen.
ACL on lyhenne sanoista Access Control List, ja sen avulla esim. Aku
voi sanoa "Anna Iineksen lukea tämä tiedosto" ilman että ylläpitäjän
tarvitsee tehdä Akua ja Iinestä varten ryhmää. Tiedoston johon jokin
ACL-määritys vaikuttaa tunnistaa plus-merkistä:
[aku@kone tmp]$ ls -l kirje.txt
-rw-------+ 1 aku aku 10 syys 15 15:23 kirje.txt
ACL:stä saat lisätietoa
täältä.
SELinux ('Security Enhanced Linux') mahdollistaa ohjelmakohtaisen
käyttöoikeuksien hallinnan. Esimerkiksi WWW-sivuja jakava
palvelinohjelma ei silloin välttämättä pääse käsiksi tiedostoon
/etc/passwd, vaikka tuon tiedoston oikeudet sallivatkin kaikille
lukuoikeuden. SELinuxin toiminnan tunnistaa yleensä /var/log/messages
-tiedoston sisältämistä "avc denied" -merkinnöistä. Lisätietoja ks.
SELinuxin pääsivu.
Jokaisella tiedostolla on omistaja ja ryhmä. Omistajan voi vaihtaa vain
root komennolla chown uusiomistaja tiedostonnimi. Ryhmän voi
vaihtaa root miksi vain ja tiedoston omistaja ryhmäksi johon itse kuuluu
komennolla chgrp uusiryhma tiedostonnimi.
Jokaisella tiedostolla on samat r,w ja x-oikeudet omistajalle, ryhmälle
ja muille. r tarkoittaa lukuoikeutta, w kirjoitusoikeutta ja x
suoritusoikeutta. Hakemistoilla r tarkoittaa oikeutta listata tiedoston
sisältö, x oikeutta käsitellä hakemistossa olevia tiedostoja ja w oikeutta
lisätä ja poistaa tiedostoja hakemistossa.
Oikeuksia muutetaan chmod-komennolla. Komennon muoto on neliosainen:
mitkä käyttäjät, mitä tehdään, mitkä oikeudet ja mikä tiedosto. Esimerkiksi
chmod g+w tiedostonnimi tarkoittaa ryhmälle (g) lisää (+)
kirjoitusoikeus (w). Samalla kertaa voidaan asettaa enemmänkin oikeuksia, esim.
chmod u=rwx,g+r,o-rw asettaa kaikki oikeudet omistajalle, lisää
ryhmälle
lukuoikeudet ja poistaa kaikilta muilta luku- ja kirjoitusoikeuden.
umask määrää mitä oikeuksia luotavat tiedostot eivät saa. Se
koostuu kolmesta numerosta väliltä 0..7. r-oikeus tarkoittaa lukua 4, w-oikeus
lukua 2 ja x-oikeus lukua 1, ja näiden summana saadaan haluttu luku.
Umaskin ensimmäinen numero tarkoittaa omistajaa, toinen ryhmää ja kolmas
muita. Jokainen umaskin numeroon koodattu oikeus ei tule luotavan
tiedoston oikeudeksi. Sopiva umask on esimerkiksi 027.
chown, chgrp ja chmod tuntevat --recursive -valitsimen, jolla komentojen
vaikutus ulotetaan koskemaan kokonaista hakemistorakennetta.
Ohjelmatiedostolle voidaan asettaa setuid-oikeus, jolloin tiedosto ajetaan
aina omistajan käyttöoikeuksilla. setgid-oikeus vastaavasti tarkoittaa,
että tiedosto ajetaan ryhmän oikeuksilla. Nämä asetetaan komennolla
chmod u+s tiedostonnimi ja chmod g+s tiedostonnimi.
setuid ja setgid
voivat ovat vaarallisia oikeuksia virheellisesti toimivissa ohjelmissa,
erityisesti jos tiedoston omistaa root.
Hakemistolla setgid-oikeus tarkoittaa, että kaikki hakemistoon luotavat
tiedostot saavat ryhmäkseen hakemiston ryhmän. Ns. tahmabitti hakemistolla
tarkoittaa, että hakemistosta saa poistaa vain itse omistamiaan tiedostoja.
Tahmabitti asetetaan komennolla chmod o+t hakemistonnimi.
mount-komennon sopivilla valitsimilla voidaan estää tiedostojen
muokkaaminen, jolloin tiedostojen ja hakemistojen w-oikeus ei vaikuta
mitenkään. Myös ohjelmien setuid- ja setgid-oikeudet voidaan jättää
huomiotta sopivilla valitsimilla mount-komennossa, samoin tiedostojen
suoritusoikeus kokonaan.
Kaikki tiedostojärjestelmät eivät tue käyttäjiä, ryhmiä ja oikeuksia.
Linuxissa laitteet näkyvät erityisinä laitetiedostoina. Näilläkin on
omistaja ja ryhmä sekä luku- ja kirjoitusoikeus tavallisten tiedostojen
tapaan.
Harjoitustehtävä
Jos root poistuu koneen vierestä ja Aku saa minuutin ajan käyttää
rootin komentotulkkia, niin mitä olennaisesti erilaisia tapoja Akulla on
varmistaa, että hän voi myöhemmin lukea Iineksen tiedostoja aina halutessaan?
Käyttöoikeuksia käsitellään monessa muussakin Unix- ja Linux-oppaassa,
tosin ilmeisesti ei millään suomenkielisellä seittisivulla näin
perusteellisesti.
Pieni
Linux-kirjanen käsittelee tiedostotyyppejä ja oikeuksia kohdassa
Syventymistä,
Best
Linux 2000 -käyttöjärjestelmän käyttöopas kertoo oikeuksista kohdassa
Omistajuus
ja käyttöoikeudet ja olennaisesti saman sisältöinen juttu on myös Ilpo
Kuivasen
Linux-kurssin kohta
käyttöoikeudet. Selkeä mutta suppea esitys on myös Jukka Korpelan
Unix-oppaan kohta
Tiedostojen suojaaminen
- chmod.
Linux-järjestelmän opastuskomennot ovat man
ja info. Sanomalla
man chmod
saat man-sivun, joka on lyhyt mutta sen lukemalla saa palautettua
muistiin miten komentoa käytettiin. Man-sivut ovat yleensäkin vain
referenssejä, uusia asioita opiskellessa kannattaa katsoa infosivuja.
Kokeile mitä info chmod tai
info chown kertovat.
- Kirjoittaja:
- Jori Mäntysalo <Jori.Mantysalo@uta.fi>
- Kopiointi:
-
Tämä kirjoitus on vapaa. Kirjoitusta saa levittää ja muuttaa vapaasti
sillä ehdolla, että muutosten tekijä ilmoitetaan muutetussa versiossa
selkeästi. Kirjoitelman tekijä on mainittava kirjoitelmasta ja sen
johdannaisteoksista tehdyissä teoskappaleissa, jollei hän sitä
erikseen kiellä.
- Kiitokset kommenteista:
- Ari Saastamoinen.
|