Tuki

Chmod

Chmod on komento, jolla muutetaan tiedoston tai hakemiston oikeuksia UNIX/Linux-järjestelmissä. On tärkeää, että tiedoston oikeudet ovat oikein varmistaaksesi toimivuuden lisäksi myös tietoturvan.

Tiedostolla voi olla kolmenlaisia oikeuksia: käyttäjän oikeudet (user), ryhmän oikeudet (group) (ryhmään voi kuulua monta käyttäjää) ja kaikkien muiden oikeudet (others).

Suojausten tulkitseminen

Komento ls -l tuottaa hakemistolistauksen, josta näkee tiedostojen ja hakemistojen oikeudet.

ozkuu@blue:~/perl% ls -l
total 8
drwxr-xr-x    2 ozkuu    admin        4096 Jun  2 12:50 banner/
-rwx------    1 ozkuu    admin         877 Apr 21 20:34 banner.pl*

Listauksen ulkonäkö ja tietenkin listattavat tiedostot ja hakemistot vaihtelevat, mutta tarvitsemamme tiedot ovat kuitenkin samassa muodossa.

Tutkitaanpa hieman tarkemmin kahden viimeisen rivin vasenta laitaa. "drwxr-xr-x" tarkoittaa, että kyseessä on hakemisto (ensimmäinen merkki on 'd', jos se olisi 'l', kyseessä olisi symbolinen linkki). Tämän jälkeen merkkijono jaetaan kolmen merkin ryhmiin, syntyy ryhmät "rwx", "r-x" ja "r-x". Näissä ryhmissä r (Read) tarkoittaa lukuoikeutta, w (Write) kirjoitusoikeutta ja x (eXecute) ajo-oikeutta - ajo-oikeus hakemiston tapauksessa tarkoittaa, että oikeudet riittävät hakemiston vaihtamiseen ko. hakemistoon, mutta tiedoston tapauksessa tiedoston ajamista komentona. Tulkitaan siis ensimmäinen kolmen merkin ryhmä, joka kertoo käyttäjän (tässä tapauksessa 'ozkuu') oikeudet tiedostoon, "rwx" tarkoittaa siis, että käyttäjällä on kaikki oikeudet (luku-, kirjoitus- ja ajo-) kyseiseen tiedostoon/hakemistoon. Seuraava kolmen merkin ryhmä, joka kertoo ryhmän oikeudet tiedostoon/hakemistoon on "r-x", joka tulkitaan, että ryhmällä ('admin') on luku- ja ajo-oikeus. Kolmas ryhmä, eli muiden (niiden jotka eivät ole käyttäjä 'ozkuu' tai ryhmässä 'admin') oikeudet ovat "r-x", eli myös luku- ja ajo-oikeudet. Kolmen merkin ryhmissä viiva (-) siis tarkoittaa kyseisen oikeuden puuttumista.

Tutkitaanpa myös hieman seuraavaa tiedostoa. Rivi alkaa "-rwx------", jolloin ensimmäinen merkki kertoo, että tämä on tiedosto - ei esim. hakemisto tai symbolinen linkki. Seuraavaksi jaetaan yhdeksän merkin ryhmä jälleen kolmen merkin ryhmiin; syntyy "rwx", "---", "---". Aiemmin opitun kertausta - omistajalla luku-, kirjoitus- ja ajo-oikeudet ("kaikki oikeudet"), ryhmällä ja muilla ei tässä tapauksessa mitään oikeuksia.

Suojausten muuttaminen

Ennen suojausten muuttamista tulisi miettiä minkälainen suojaus millekin tiedostolle tarvitaan, eikä läisikiä niitä summamutikassa, ja miettiä (etukäteen miettimisen toki kaikki atk-alalla - ja miksei muillakin aloilla - toimivat ovat havainneet erinomaiseksi keinoksi välttää virheitä) myöhemmin miksi jokin ominaisuus ei toimi halutulla tavalla. Yleisimpiä suojauksia tiedostoille ovat:
Julkinen hakemisto (tietoturva ei korkea) 755 (chmod u=rwx tiedosto; chmod go=rx tiedosto) (rwxr-xr-x)
Suojattu hakemisto (tietoturva korkea) 700 (chmod u=rwx tiedosto; chmod go= tiedosto) (rwx------)
Julkinen tiedosto (tietoturva ei korkea) 644 (chmod u=rw tiedosto; chmod go=rx tiedosto) (rw-r--r--)
Suojattu tiedosto (tietoturva korkea) 600 (chmod u=rw tiedosto; chmod go= tiedosto) (rw-------)

Suojauksien asettaminen on helppoa. Komentona käytetään jo joillekin ehkä ennestään tuttua UNIX/Linux-komentoa 'chmod'. Komennon syntaksi on chmod . Suojaukset voidaan asettaa kirjaimilla tai numeroilla. Tässä lista mahdollisista vaihtoehdoista:
u käyttäjä
g ryhmä
o muut
a kaikki (sama kuin ugo)

= asettaa suojauksen annetuksi
+ lisää oikeuksia jossei niitä ole
- poistaa oikeuksia jos niitä on

r lukuoikeus
w kirjoitusoikeus
x ajo-oikeus

Ylläolevista kirjaimista muodostetaan merkkijono, joka voisi näyttää esimerkiksi tältä: go+rx. Merkkijono voi tuntua aluksi hieman kryptiseltä, mutta tutkitaanpa sitä hieman tarkemmin. Valitsin ensimmäisestä listasta kirjaimet g ja o, eli ryhmä ja muut - nämä ovat ne, joiden suojaustasoa muutetaan. Seuraavaksi on merkki +, jolloin nähdään, että oikeuksia lisätään. Tämän jälkeen kirjaimet r ja x, eli tiedostolle/hakemistolle lisättäisiin luku- ja ajo-oikeus ryhmälle ja muille. komentona: chmod go+rx tiedosto käytännössä esim

ozkuu@blue:~/perl% chmod go+rx banner.pl
ozkuu@blue:~/perl% ls -l
total 8
drwxr-xr-x    2 ozkuu    admin        4096 Jun  2 12:50 banner/
-rwxr-xr-x    1 ozkuu    admin         877 Apr 21 20:34 banner.pl*

Nyt kaikilla on oikeus lukea ja suorittaa tiedosto banner.pl.

Chmod ja numerot

Chmod osaa käyttää merkkien sijasta myös numeroita. Tällöin suojaus asetetaan numeroilla annetuksi suojaukseksi. Esimerkiksi chmod 755 tiedosto tarkoittaisi samaa kuin komennot chmod u=rwx tiedosto ja chmod go=rx tiedosto. Numeroilla asettaminen säästää siis vaivaa, kun komentoja ei tarvitse kirjoittaa kuin yksi. Numerosarja muodostuu lähes samoin kuin kirjainsarjakin; ensimmäinen numero tarkoittaa käyttäjän, toinen ryhmän ja kolmas muiden oikeuksia. Numero taas lasketaan biteistä. 7 on sama kuin 111 eli lukuoikeus 1, kirjoitusoikeus 1 ja ajo-oikeus 1, toisin sanoen kaikki oikeudet. Bitit (binääriluvut; arvo voi olla 0 tai 1) muutetaan desimaaliluvuiksi muuttamalla ne oikealta vasemmalle päin desimaaleiksi. Jokainen uusi 1 kasvattaa numeron arvoa edelliseen verrattuna tuplasti, esim 100101 olisi 1+4+32 eli 37. Chmodin suurin luku on kuitenkin 111, eli 7 (lukuoikeus 4, kirjoitusoikeus 2, ajo-oikeus 1, näitä lukuja sopivasti yhteenlaskemalla saadaan haluttu oikeus.) Tästä vielä muutama esimerkki, chmod 751 tiedosto muuttaisi tiedoston oikeudet sellaisiksi, että käyttäjä voisi lukea, kirjoittaa ja ajaa sitä, ryhmä voisi lukea ja ajaa, ja muut voisivat ajaa sitä.

Tiedostonnimissä voi käyttää ns. wildcardeja, esim *.html (vaikuttaisi kaikkiin .html-loppuisiin tiedostoihin) tai p?p.txt (vaikuttaisi esim tiedostoihin pep.txt, p2p.txt, pap.txt jne, joissa olisi yksi merkki p-kirjainten välissä.) Myös chmod -r oikeudet hakemisto toimii, jolloin saat koko hakemiston sisältämät tiedostot ja alihakemistot 'chmodattua' samalla kerralla. Lisätietoja kannattaa katsoa shellissä komennolla man 1 chmod