1. Unixin ja Linuxin suppea historia
Bellin laboratorioissa kehitettiin 1969 Multics-käyttöjärjestelmästä pienempi
versio nimeltä Unics. Nimi vääntyi käyttäjien suussa muotoon Unix eikä
muuttunut siitä enää sen enempää. Unixin kehitys jakaantui kahteen päähaaraan,
System V- ja Berkeley- eli BSD-pohjaisiin variantteihin. Monet valmistajat
ovat kehitelleet omia Unixejaan, esimerkkeinä mainittakoon vaikkapa HP:n
HP-UX, Silicon Graphicsin Irix ja Sunin Solaris. Linux ei sijoitu selkeästi
kumpaankaan päähaaraan vaan on yhdistelmä niistä.
Linuxin kehitys alkoi 1991, kun Helsingin Yliopiston tietojenkäsittelyopin
opiskelija Linus Torvalds julkaisi vapaaseen levitykseen internetissä
ensimmäiset versiot Linuxin kernelistä. Torvalds oli kyllästynyt tehottomiin
käyttöjärjestelmiin, jotka eivät voineet hyödyntää 386-suorittimen ominaisuuksia
kunnolla. Monet ohjelmoijat ja Unix-käyttäjät innostuivat vapaasti
levitettävästä käyttöjärjestelmästä ja liittyivät mukaan kehitystyöhön.
Käyttäjien nykyistä määrää on vaikea arvioida, mutta kuusi miljoonaa lienee
oikeaa suuruusluokkaa, jopa kymmenestä miljoonasta on puhuttu.
Linuxin lisenssi on Free Software Foundationin General Public Licensen
(GPL) alainen. Lyhyesti sanottuna tämä tarkoittaa sitä, että Linuxia saa
kopioida ja jopa myydä vapaasti kunhan järjestelmän lähdekoodi on aina
ilmaiseksi saatavilla. Linuxin kernel on suurimmalta osin kirjoitettu
C-kielellä ja tämän ansiosta siitä on tehtykin useita eri porttauksia muille
kuin Intel-pohjaisille laitteistoille kuten Alpha ja PPC.
Alkuaikojen hankala järjestelmän asennus ja ohjelmien saatavuus helpottuivat
selvästi, kun alkoi ilmestyä erilaisia distribuutioita so. jakelupaketteja
Linuxista. Vanhimpia ja vieläkin käyttökelpoinen on Slackware, joka sopii
kuitenkin lähinnä edistyneelle ja viitseliäälle käyttäjälle. Muita tunnettuja
ilmaiseksi saatavia distribuutioita ovat Debian, saksalainen SuSE ja
tunnetuimpana Red Hat. Suomen ohjelmistotyö julkaisee Red Hatiin perustuvaa
osittain suomennettua SOT-Linuxia. Tällä kurssilla käsitellään Red Hatin
versiota 5.2.
2. Linuxin tarjoamia mahdollisuuksia
Linux on täysin 32-bittinen moniajava monen käyttäjän käyttöjärjestelmä.
Muistinsuojaus estää virheellisesti toimivia ohjelmia sekoittamasta järjestelmää
ja muita ohjelmia. Näennäismuistia voidaan jakaa usealle eri kiintolevylle
ja muuttaa sen kokoa lennossa. Vakaa toiminta ja vähäinen käynnistelyn
tarve ovat Linux-järjestelmälle luonteenomaisia. Tiedostojärjestelmän
ominaisuuksia ovat tehokas tilankäyttö ja nopeat levytoiminnot.
Verkko-ominaisuudet ovat normaalia Unix-tasoa eli varsin monipuoliset.
Tyypillisiä käyttökohteita ovatkin erilaiset verkkopalvelimet kuten
WWW-, FTP-, uutisryhmä- ja sähköpostipalvelin. Kaikki tarpeellinen tulee
distribuution mukana, ylimääräisiä kalliita ohjelmia ei tarvita. Ilman
graafista käyttöliittymää jopa 386-tasoinen kone pystyy toimimaan pienimuotoisena
palvelimena. Unix-verkkoon Linux sopii erityisen hyvin, sillä se osaa
useita "suurempien" Unixien protokollia. Windows-verkossa Linux pystyy
toimimaan palvelimena Samba-ohjelmiston avulla.
Tavanomainen Linux-distribuutio sisältää suuren joukon erityyppisiä yleensä
vapaasti levitettäviä ohjelmia. Tiedostojen käsittelyyn, verkkokäyttöön,
grafiikan käsittelyyn, ylläpitoon ja ohjelmointiin tarvittavat työkalut
tulevat distribuution mukana. Peleistä kiinnostuneelle Linux ei ole (ainakaan
tällä hetkellä) sopiva ratkaisu, vaikka esim. Id Softwaren kuuluisat pelit
Doom ja Quake on sillekin saatavissa. Jo distribuution mukana tulevilla
ohjelmilla pärjää pitkälle, mutta tarpeen vaatiessa on internetistä saatavilla
suuria määriä ilmaisia työkaluja lisää.
Kaupallinen tuki Linuxille on vielä lapsenkengissään, mutta hiljattain
suuret ohjelmistotalot ovat ilmoittaneet tukevansa Linuxia. Oracle on tehnyt
tietokannastaan Linux-version ja Corel julkaissut Linux-versiot Word Perfectistä
sekä Corel Draw:sta. Netscape-selaimen on saanut Linuxille jo kakkosversiosta
lähtien. Muita tunnettuja Linuxia nykyisin tukevia yrityksiä ovat mm. Caldera
(joka julkaisee myös omaa distribuutiotaan), Compaq ja Intel.
3. Peruskäsitteitä
Unix-järjestelmän rakenne poikkeaa oleellisesti muista tavanomaisista
järjestelmistä kuten MS-DOS ja Windows. Unix suunniteltiin aikana, jolloin
tietokoneet sekä niiden muisti olivat kalliita, jonka vuoksi useampi käyttäjä
käytti samaa konetta edullisten päätteiden kautta. Unix-järjestelmän käyttö
vaatii aina sisäänkirjautumisen ja samaa konetta voi käyttää samanaikaisesti
useampi kuin yksi kirjautunut käyttäjä. Muut käyttäjät voivat olla
järjestelmään vaikkapa pääteyhteydessä toiselta koneelta (Windowsinkin
mukana tulee vakiona ohjelma Telnet, jolla pääteyhteyden voi muodostaa).
Pääteyhteyden yli voi käyttää paitsi tekstipohjaisia, myös graafisia ohjelmia.
Unix-järjestelmän ylläpidosta huolehtii ylikäyttäjä eli root. Ylikäyttäjällä
on oikeus tehdä käytännössä mitä tahansa, joten vahinkojen välttämiseksi
ylläpitäjän tulee käyttää konetta tavallisella käyttäjätunnuksella muulloin
kuin ylläpitotoimenpiteitä tehdessään. Jokaiseen käyttäjään liittyy käyttäjänumero,
joka ylikäyttäjän tapauksessa on aina nolla.
Modulaarisuus on tärkeä osa Unixien filosofiaa, järjestelmä koostuu osista
ja kerroksista, joista jokainen voidaan tarpeen tullen vaihtaa. Käyttöjärjestelmän
päällä pyörii komentotulkki eli shell (joskus suomennettu "kuori") joka
huolehtii käyttäjän komentojen käsittelystä. Komentotulkki voidaan haluttaessa
vaihtaa, Linuxissa yleisimmin käytetty on bash eli Bourne again shell. Muita
tavallisia ovat mm. tcsh ja zsh.
Graafinen käyttöliittymä Unixissa on kaksitasoinen, alemmalla tasolla on
X Window System eli lyhemmin X. Itse X tarjoaa ainoastaan ruudulle tulostamiseen
tarvittavat palvelut eikä varsinaista käyttöliittymää. X:n päällä toimii
toinen prosessi, ikkunamanageri (window manager) joka vasta huolehtii
X:n käyttöliittymästä. Ohjelmat itsessään eivät välitä ikkunamanagerista,
vaan niidenkin käyttöliittymä on erillinen komponentti (tämän vuoksi
monet graafiset Unix-ohjelmat ovat erilaisia käyttöliittymältään).
Modulaarisen rakenteen johdosta ikkunamanageri voidaan
vaihtaa toiseen jopa X:ää sulkematta. Ikkunamanagereita on joka lähtöön,
paremmuusjärjestyksen päättäköön jokainen itse. Yleisesti käytettyjä ovat
mm. kevyt Fvwm, graafisesti näyttävä Enlightenment ja helppokäyttöinen
työpöytäympäristö KDE.
4. Hakemistopuu
Unixissa kaikki levyasemat ja niiden hakemistot, niin verkkolevyjen kuin
paikallistenkin, näkyvät yhden suuren hakemistopuun alla. Mitään erillisiä
levyasematunnuksia ei ole vaan jokaiseen paikkaan voidaan viitata hakemiston
nimellä. Joillekin hakemistoille on varattu erityistehtäviä kuten laite-
ja asetustiedostojen hakemistot. Hakemistot ja alihakemistot erotetaan
toisistaan kauttaviivalla eikä kenoviivalla kuten esim. DOSissa.
Oletushakemistoon viitataan kuten DOSissa pisteellä (.) ja alempaan hakemistoon
kahdella pisteellä (..).
Kuva 4.1 Hakemistopuun hierarkia
Tavallisimpien hakemistojen kuvaukset:
/
Päähakemisto. Tämän kautta voidaan viitata kaikkiin muihin hakemistoihin.
Täydellinen hakemistopolku sisältää aina ensimmäisenä merkkinään kauttaviivan.
/home
Käyttäjien kotihakemistot. Jokaisella käyttäjällä on täällä käyttäjänimeään
vastaava alihakemisto kuten /home/marq. Kotihakemistoon voidaan aina viitata
myös lyhenteellä ~ (tilde, mato). Internet-kotisivujen osoitteissa esiintyvä
~ tarkoittaa juurikin käyttäjän kotihakemistoa.
/etc
Asetustiedostojen hakemisto. Suurin osa koko järjestelmää koskevista
asetustiedostoista ja -komentojonoista sijaitsee täällä.
Esim. /etc/inittab - järjestelmän pääkäynnistystiedosto ja
/etc/rc.d/rc.local - paikallisten asetusten komentojono
/tmp
Väliaikaistiedostoille tarkoitettu hakemisto.
/dev
Laitetiedostojen hakemisto. Kaikki järjestelmään asennetut laitteet
(ja monta asentamatontakin) näkyvät tässä hakemistossa tiedostoina.
Esim. /dev/hda - ensimmäinen IDE-kiintolevy
/mnt
Hakemisto, johonka liitetään (mount) toisia tiedostojärjestelmiä yleensä
väliaikaisesti.
Esim. /mnt/cdrom - CD-asema
/var
Järjestelmän ajon aikana päivittyviä tiedostoja. Mm. tulostusjonot ja
lokitiedostot sijaitsevat täällä.
/proc
Järjestelmän tilatiedot. Täällä sijaitseviin tiedostoihin Linux päivittää
tietoa toiminnastaan kuten käytössä olevista keskeytyksistä ja io-porteista.
Esim. /proc/interrupts - Linuxin käytössä olevat keskeytykset
/bin ja /sbin
Käynnistyksen yhteydessä tarvittavia komentoja ja ohjelmia
/lib
Järjestelmän kirjastoja.
/usr
Tavalliset ohjelmat, kirjastot ja ohjetiedostot sekä paljon muuta
sisältävä hakemisto.
/usr/bin
Suurin osa komennoista ja valmiina asennetuista ohjelmista.
Esim. /usr/bin/pico - yksinkertainen editori
/usr/lib
Kuten /lib mutta ei sisällä käynnistyksen kannalta yhtä kriittisiä kirjastoja.
/usr/doc
Selkokielisiä ohjetiedostoja joka lähtöön.
Esim. /usr/doc/HOWTO/Ethernet-HOWTO - ethernet-ohje
/usr/local
Paikallisesti asennetuille ohjelmille tarkoitettu hakemisto. Sisältää
samankaltaiset alihakemistot kuin /usr.
5. Peruskomennot
Graafisesta käyttöliittymästä huolimatta suuri osa toiminnoista on edelleen
kätevää - tai jopa pakko - tehdä kirjoittamalla ne komentoriville. Komentoriviä
voi hyödyntää yhtä hyvin konsolilla, X:n alla ikkunassa tai pääteyhteyden yli.
Peruskomennot ovat samat kaikissa Unixeissa, komentojen parametreissa ja
toiminnassa on jonkin verran eroja eri järjestelmien välillä. Tässä luvussa
käsitellään tavanomaisimpia komentoja, lisää tulee myöhemmissä luvuissa sitä
mukaa kun niitä tarvitaan.
Unixissa komentojen ja tiedostonimien kirjainten koolla on merkitystä. Komennot
kirjoitetaan pienin kirjaimin. Tiedostot teksti.txt, Teksti.txt ja TEKSTI.TXT
eivät ole sama asia. Jokerimerkkinä käytetään kuten DOSissakin asteriskia
eli tähteä (*)korvaamaan osaa tiedostonimestä ja kysymysmerkkiä (?) korvaamaan
yhtä kirjainta. Jokerien toiminta on muuten hieman DOSia monipuolisempaa.
Esim. *.txt - Kaikki .txt -päätteiset tiedostot ja
*a* - kaikki tiedostot joiden nimessä on kirjain a
logout
Komento, jolla kirjaudutaan järjestelmästä ulos tai suljetaan aktiivinen
pääteyhteys. Linuxissa voi myös painaa tyhjällä rivillä Control-D (syötteen
loppumerkki), mikä on kylläkin nopeampaa, mutta ei toimi välttämättä muissa
järjestelmissä.
ls
Komento ls vastaa DOS-käyttäjille tuttua komentoa dir, eli se näyttää
hakemistossa olevien tiedostojen tiedot. Monilla vivuilla eli komentoa
ohjaavilla parametreilla saa muokattua ls:n antamaa listausta sopivampaan
muotoon.
Esimerkkejä:
ls
Pelkkä ls antaa luettelon hakemistossa olevista tiedostoista.
ls -a
Vipu -a aiheuttaa sen, että näytetään listassa kaikki tiedostot. Unixissa
ei ole varsinaisia piilotiedostoja, mutta ls ei näytä pisteellä alkavia
tiedostonimiä oletuksena. Pisteellä alkavia tiedostoja ovat käyttäjän
kotihakemistossa olevat asetustiedostot (ns. rc-tiedostot) kuten .bashrc.
ls -l a*
Näyttää tarkemmat tiedot kaikista a-alkuisista tiedostoista ja alihakemistoista.
Vivulla -l saa näkyviin huomattavasti tarkemmat tiedot tiedostoista kuten
käyttöoikeudet, omistajan, koon ja päiväyksen. Jos listaukseen ei haluta
a-alkuisissa alihakemistoissa olevista tiedostoista, voidaan käyttää vipua
-d.
ls -ldS *p*
Äkkiseltään kryptisen näköinen rivi näyttää tarkemmat tiedot kaikista
tiedostoista, joiden nimessä on p ja järjestää ne suuruusjärjestykseen.
ls:n (ja monen muun komennon) vipuja voidaan yhdistää kuten tässä kirjoittamalla
ne kaikki miinusmerkin perään tai sitten kirjoittamalla ne erikseen.
mkdir ja rmdir
Komennoilla mkdir ja rmdir voidaan luoda ja poistaa hakemistoja. Poistettavan
hakemiston on oltava tyhjä.
cd
Vanhoille DOS-käyttäjille tutunnäköinen komento vaihtaa oletushakemiston.
Ainoa tähän komentoon liittyvä erikoisominaisuus on se, että pelkkä
cd ilman parametreja vaihtaa oletushakemistoksi käyttäjän kotihakemiston.
rm
Komento rm poistaa tiedostoja (kuten DOSin del). Parametriksi annetaan
normaali tiedostonimi mahdollisine jokerimerkkeineen. Komennon käytössä
kannattaa olla huolellinen, sillä poistettuja tiedostoja ei Unix-järjestelmissä
yleensä pystytä palauttamaan muuten kuin varmuuskopioista.
Esimerkkejä:
rm *.txt
Poistaa kaikki .txt -päätteiset tiedostot.
rm -i *
Poistaa kaikki hakemiston tiedostot yksitellen interaktiivisesti. Jos tiedosto
poistetaan, valitaan y [Enter], jos ei niin n [Enter].
rm -r /home/marq/temp
Poistetaan temp-niminen tiedosto tai hakemisto alihakemistoineen.
Tehokas mutta vaarallinen vipu -r aiheuttaa sen, että rm ulottaa lonkeronsa
myös alihakemistoihin. Vivulla -r saadaan poistettua nopeasti hakemisto
alihakemistoineen, siksi sen käytössä kannattaa olla varovainen. Normaalisti
rm ei poista hakemistoja.
Red Hatissa on turvallisuussyistä oletuksena päällä parametri -i, eli
suuria vahinkoja ei pääse syntymään virheellisen komennon vuoksi. Jos
moista holhoamista ei tunne tarvitsevansa, voi komentaa unalias rm.
echo
Komennolla echo voidaan tulostaa tekstiä. Echo tulostaa parametrina annetun
tekstin. Jos tekstissä on ohjausmerkkejä (kts. ohjausmerkit), on teksti
ympäröitävä hipsuilla (').
Esimerkki:
echo 'Tässä tekstissä >on< ohjausmerkkejä!'
Tulostaa parametrina annetun tekstin. Ilman hipsuja tulisi virheilmoitus.
cat
DOSin type-komentoa vastaava cat tulostaa parametrina annetun tiedoston.
Parametriksi voidaan antaa paitsi yksi tiedosto, myös jokerimerkkejä tai
useampi tiedosto.
Esimerkki:
cat teksti.*
Näyttää kaikkien teksti-alkuisten tiedostojen sisällön.
cp
cp vastaa DOS-käyttäjille tuttua copy-komentoa. Ensimmäisenä parametrina
annetaan kopioitava tiedosto mahdollisine jokerimerkkeineen ja toisena
parametrina kohdehakemisto tai -tiedosto, jos halutaan kopioida tiedosto
toiselle nimelle. Oletushakemistoon voidaan kopioida antamalla kohteeksi
piste (.). Vipu -r aiheuttaa rekursiivisen toiminnan.
Esimerkki:
cp -r /tmp/* .
Kopioi kaikki tiedostot ja alihakemistot hakemistosta /tmp oletushakemistoon.
Ohjausmerkit
Unixien komentorivi tarjoaa monipuoliset mahdollisuudet käsitellä komentojen
tulostus- ja syötevirtoja. Ohjausmerkkejä käyttämällä saadaan esim. ohjattua
toisen komennon tulostus toisen syötteeksi. Seuraavassa luettelossa on
joitakin tavallisimpia ohjausmerkkejä:
> - Ohjaa tulostuksen tiedostoon
>> - Liittää tulostuksen tiedoston loppuun
< - Ottaa syötteen tiedostosta
| - Ohjaa tulostuksen toisen komennon syötteeksi (putki)
'' - Merkkijono
; - Komentojen erotin
Esimerkkejä ohjausmerkkien käytöstä:
cat eka.txt toka.txt > yhdistetty.txt
Tulostetaan cat-komennolla tiedostot eka.txt ja toka.txt ja ohjataan tulostus
tiedostoon yhdistetty.txt. Tällä tavoin voidaan yhdistää tiedostoja.
ls -l | more
Näyttää pitkän hakemistolistauksen sivuittain. Komento more on ns. filtteri,
joka näyttää saamansa syötteen sivuittain. Välilyönnillä saa uuden sivun
ja enterillä uuden rivin. Toinen näppärä vastaava filtteri on less, jonka
avulla tulostusta voidaan selata takaisinpäinkin.
mkdir aika ; date >aika/juurinyt.txt
Ensin tekee alihakemiston aika, tulostaa päiväyksen komennolla date ja
ohjaa sen alihakemiston tiedostoon tervehdys.txt.
6. Ohjetiedostot ja -järjestelmät
Linuxin mukana tulee varsin kattava dokumentaatio, ongelmana onkin lähinnä
löytää se ja osata käyttää sitä. Tavallisimpia avun lähteitä ovat manuaalisivut,
ohjelmien omat dokumentit, komentoriviltä saatavat käyttöohjeet, HOWTO-tekstit
ja internet.
man
Komennon man avulla voidaan hakea tietoa esim. halutun komennon käytöstä.
Yksinkertaisimmillaan komento on muotoa man komento. Jos samalla nimellä
löytyy useampia manuaalisivuja, voidaan niistä valita oikea antamalla
sivun numero ensimmäisenä parametrina tyyliin man sivunumero komento.
Manuaalisivuilta löytyy tavallisimmin apua komentojen käyttöön, järjestelmän
asetustiedojen muokkaamiseen ja C-kielen funktioiden käyttöön.
Esimerkkejä:
man man
Näyttää man-komennon itsensä ohjeen. Hyödyllistä luettavaa.
man 2 exit
Näyttää toisen manuaalisivun aiheesta exit.
man -k login
Näyttää luettelon kaikista manuaalisivuista, joissa on avainsana login.
Luetteloa voi selata samoilla komennoilla kuin manuaalisivujakin. Komento
apropos vastaa komentoa man -k.
Manuaalisivu jakaantuu osiin, joita ovat yleensä komennon nimi ja käyttötarkoitus,
parametrit lyhyesti, parametrien tarkemmat selitykset, mahdollisten
asetustiedostojen sisältö, ohjelman käyttämät tiedostot ja ympäristömuuttujat
sekä luettelo muista aiheeseen liittyvistä manuaalisivuista.
Manuaalisivun selailussa voi käyttää seuraavia näppäimiä:
Q - Poistuu ohjelmasta
H - Näyttää näppäinohjeen
Nuolinäppäimet tai K/J - Vieritys ylös ja alas
Välilyönti tai PgDn - Ruudullinen tekstiä eteenpäin
B tai PgUp - Ruudullinen tekstiä taaksepäin
/ - Etsii sanan. Sana kirjoitetaan kauttaviivan perään
N - Etsii uudelleen
Xman
Graafinen liittymä manuaalisivuihin. Antaa valita manuaalisivun aiheittain
jaotelluista luetteloista. Xman käynnistyy komennolla xman, ellei sitä löydy
jo ikkunamanagerin valikoista.
Kuva 6.1 Xmanin pääikkuna
Ohjelmien oma dokumentaatio
Useimmat komennot antavat lyhyen kuvauksen parametreistaan tai ainakin
luettelon niistä jos komennolle annetaan parametriksi --help. Tämä on
GNU:n käytäntö. Varsinaiset ohjelman dokumentit asentuvat joko hakemistoon
/usr/doc tai sitten ne ovat ohjelman omassa hakemistossa.
HOWTO-tekstit
Hakemistosta /usr/doc/HOWTO löytyy suuri määrä tekstimuotoisia ohjetiedostoja,
joista on usein korvaamatonta apua järjestelmän asetusten kanssa. HOWTO-
tekstit ovat syntyneet Linux Documentation Projectin (LDP) myötä. Teksteistä
löytyy apua mm. laitteisto-ongelmiin, verkkopalveluiden asennukseen ja
muihinkin järjestelmän osien konfigurointiin.
Esim. PPP-HOWTO - Ohjeita modeemi- ja muiden PPP-verkkoyhteyksien
konfigurointiin.
7. Tiedoston ominaisuudet
Monen käyttäjän järjestelmissä tiedostojen suojaus on tärkeä ominaisuus
tietoturvan kannalta. Unix ja niinollen myös Linux sisältää menetelmät
tiedostojen erilaisten oikeuksien käsittelyyn. Tiedostoille ja hakemistoille
voidaan määrätä omistaja, ryhmäomistaja ja niille oikeudet tiedoston
erilaiseen käsittelyyn. Seuraavaksi tarkastellaan tarkemmin ls -komennolla
saatuja tietoja muuan kuvatiedostosta:
-rw-r--r-- 1 marq users 153225 Jan 12 1998 kaunis.gif
Vasemmalta lukien nähdään tiedoston oikeusbitit, kovien linkkien määrä
(ei järin tarpeellinen), omistaja, ryhmäomistaja, tiedoston koko tavuina,
viimeisin muokkauspäivämäärä ja viimeisenä tiedostonimi.
chown ja chgrp
Komennoilla chown ja chgrp voidaan vaihtaa tiedoston omistajaa ja ryhmäomistajaa.
Tavallinen käyttäjä ei voi vaihtaa tiedostojensa omistajaa ja ryhmäomistajaakin
vain jos itse kuuluu kyseiseen ryhmään. Ylikäyttäjä voi vaihtaa tiedostojen
omistajia ja ryhmäomistajia vapaasti. Vipu -R aiheuttaa rekursiivisen
toiminnan eli kaikkien alihakemistojenkin oikeudet muutetaan.
Esimerkkejä:
chown root kaunis.gif
Vaihtaa tiedoston kaunis.gif omistajaksi ylikäyttäjän.
chgrp -R users /home/marq
Vaihtaa /home/marq -hakemiston ja sen alihakemistojen ja niiden sisältämien
tiedostojen ryhmäomistajaksi ryhmän users.
Oikeusbitit
Tiedoston oikeudet sisältävä kenttä voidaan hajoittaa neljään kenttään:
tyyppi, omistajan oikeudet, ryhmäoikeudet ja muiden oikeudet. Kentän
ensimmäinen merkki kertoo tiedoston tyypin ja on tyhjä (-) tavallisille
tiedostoille.
Muita tyypillisiä kirjaimia ovat:
d - Hakemisto
l - Symbolinen linkki
b - Blokkilaite (/dev -hakemistossa)
c - Merkkilaite (/dev -hakemistossa)
Jokaisessa oikeuskentässä on kolme kohtaa, joilla voidaan määrätä tiedoston
lukuoikeus (r), kirjoitusoikeus (w) ja suoritusoikeus (x). Tiedostoille
lukuoikeus tarkoittaa oikeutta tarkastella tiedoston sisältöä, kirjoitusoikeus
oikeutta muokata tiedostoa mutta ei poistaa sitä ja suoritusoikeus oikeutta
käynnistää tiedosto (käytössä ohjelmilla ja komentojonoilla).
Mikäli tiedoston suoritusoikeuden kohdalla on s, se tarkoittaa, että tiedosto
ajetaan tiedoston omistajan eikä käynnistäjän oikeuksin. Ominaisuus on
joissakin harvoissa tilanteissa hyödyllinen tai jopa pakollinen, mutta
huolimattomasti käytettynä vakava tietoturvariski.
Hakemiston oikeudet näkyvät listauksessa samanlaisina kuin tiedostonkin,
mutta oikeuskentillä on hieman eri merkitykset. Lukuoikeus (r) tarkoittaa
oikeutta lukea hakemistossa olevia tiedostoja, kirjoitusoikeus (w)
oikeutta lisätä sekä poistaa tiedostoja ja suoritusoikeus (x) mahdollisuutta
ottaa hakemistolistaus hakemistosta.
Hakemistojen kohdalla s-kirjaimella on hyödyllinen käyttötarkoitus: jos
hakemiston ryhmäoikeuksissa on s-bitti päällä, niin kaikki sinne luotavat
tiedostot saavat automaattisesti ryhmäomistajakseen kyseisen ryhmän.
Ominaisuutta voidaan hyödyntää kun tehdään käyttäjäryhmille esim.
projektihakemistoja.
chmod
Komennolla chmod voidaan muuttaa tiedostojen ja hakemistojen oikeusbittejä.
Komennon yleinen muoto on chmod oikeudet tiedosto. Tiedostonimi voi sisältää
normaaleja jokerimerkkejä ja vivulla -R voidaan käsitellä hakemistot
rekursiivisesti kuten chown- ja chgrp -komennoillakin. Oikeudet sisältävä
parametri koostuu kolmesta osasta: kenen oikeuksia muutetaan, miten muutetaan
ja mitä oikeuksia muutetaan.
Parametrin ensimmäisen osan mahdolliset arvot ovat:
u - omistaja
g - ryhmäomistaja
o - muut käyttäjät
a - kaikki, vastaa siis kirjaimia ugo
Toisessa osassa annetaan muutoksen tyyppi:
+ - Lisätään oikeus
- - Poistetaan oikeus
= - Asetetaan oikeus
Kolmannessa osassa annetaan käsiteltävien oikeuksien kirjain kuten edellä
esitettiin eli r, w, x tai s. S-bitti on hyödytön ilman x-bittiä, eli
ne kannattaa asettaa kerralla. Kirjaimen puuttuminen tarkoittaa myös oikeuden
puuttumista asetuksessa.
Esimerkkejä:
chmod a+rw linuxkurssi1.html
Lisää kaikille kirjoitus- ja lukuoikeudet tiedostoon linuxkurssi1.html.
chmod o= viiva.gif
Poistaa muilta kuin omistajalta ja ryhmäomistajalta kaikki oikeudet tiedostoon
viiva.gif.
chmod g=rwxs /usr/projekti
Asettaa /usr/projekti -hakemiston oikeudet siten, että ryhmällä on sinne
kaikki oikeudet ja sinne luotujen tiedostojen ryhmäoikeus asetetaan hakemiston
ryhmäomistajaksi automaattisesti. Hyödyllinen esim. projektiryhmän
hakemistojen kanssa käytettynä.