Chmod

Chmod (change mode) on Unix-ohjelma, jolla muutetaan tiedostojen ja hakemistojen käyttöoikeuksia. Käyttöoikeuksia kutsutaan Unixissa yleisesti myös moodeiksi (mode). Oikeuksien muuttamiseen chmodissa voidaan käyttää joko numeerisia tai symbolisia moodeja.

 Komennon syntaksi 

chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... MODE[,MODE]... FILE...

Vapaaehtoisia argumentteja ovat muun muassa -R (rekursiiviset muutokset), -v (tulostaa tiedot kaikista käsitellyistä tiedostoista ja kansioista) ja -f (sivuuttaa suuren osan virheilmoituksista).

Ensimmäinen versio on komennon numeerinen muoto, joka tehokas erityisesti silloin kun halutaan asettaa tiedoston tai kansion oikeudet kokonaan uusiksi. Jälkimmäinen on komennon symbolinen muoto, joka puolestaan soveltuu erityisesti tilanteisiin, joissa halutaan lisätä tai poistaa tiettyjä oikeuksia vaikuttamatta tiedoston muihin oikeuksiin.

Tiedostojen ja kansioiden oikeudet voi tarkastaa komennolla ls.

 Numeerinen muoto 

Komennon numeerisella muodolla voidaan tehokkaasti vaihtaa kerralla tiedoston tai kansion kaikki oikeudet. Numeerinen muoto hyväksyy maksimissaan 4 oktaalista numeroa. Oikeanpuoleiset kolme numeroa edustavat omistajan, ryhmän ja muiden käyttäjien oikeuksia, vastaavassa järjestyksessä. Neljännellä numerolla (ensimmäinen vasemmalta) voidaan asettaa erityinen setuid, setgid, tai sticky moodi.

Numeeriset oikeudet muodostuvat seuraavasti:
 #  Oikeus 1  suoritusoikeus eli x-oikeus 2  kirjoitusoikeus eli w-oikeus 4  lukuoikeus eli r-oikeus

Yhdistetyt oikeudet saadaan laskemalla halutut oikeudet yhteen, jolloin esimerkiksi suoritus- ja lukuoikeus saadaan luvulla 1 + 4 = 5. Seuraavassa on vielä lista eri lukuarvojen muodostamista oikeuksista.

Numeeriset oikeudet
 #  Oikeudet  rwx 7  kaikki  111 6  luku ja kirjoitus  110 5  luku ja suoritus  101 4  vain luku  100 3  kirjoitus ja suoritus  011 2  vain kirjoitus  010 1  vain suoritus  001 0  ei oikeuksia  000

Seuraava komento esimerkiksi antaa tiedostoon testi.txt kaikille käyttäjäluokille lukuoikeuden, ryhmälle lisäksi suoritusoikeuden ja käyttäjälle vielä kirjoitusoikeudenkin:

$ chmod 754 testi.txt

 Symbolinen muoto 

Muutettavat oikeudet on myös mahdollista määrätä symbolisilla parametreillä. Symboleista muodostetaan merkkijono, joka seuraavaa seuraavaa rakennetta:

$ chmod [kohde][operaattori][moodit] <tiedosto> ...

Kohteella määritetään kenen oikeuksia ollaan muuttamassa. Mikäli kohdetta ei ole määritetty käytetään oletusarvona kohdetta "kaikki". Seuraavassa taulukossa on listattu tunnistetut symbolit ja niiden merkitykset. Tiedoston tai kansion omistajaa ja ryhmää on mahdollista vaihtaa komennolla chown

 Kohde  Käyttäjäluokka  Kuvausu  käyttäjä (user)    tiedoston omistajag  ryhmä (group)  tiedoston ryhmään kuuluvat käyttäjäto  muut (others)  käyttäjät, jotka eivät kuuluu kumpaankaan edellisistäa  kaikki (all)   kaikki edelliset, sama kuin ugo

Operaattorilla määritetään kuinka oikeuksia muutetaan. Komento hyväksyy seuraavat operaattorit: 
 Operaattori  Kuvaus+  lisää määrätyt moodit määrätyille luokille-  poistaa määrätyt moodit määrätyiltä luokilta=  määrättyjen luokkien moodit asetetaan täsmälleen määrättyjen moodien mukaisiksi

Moodit ilmaisevat mitä oikeuksia määrätyille luokille ollaan antamassa, poistamassa tai asettamassa. Seuraavassa on listattu käytössä olevat perusmoodit:

 Moodi  Nimi  Kuvausr  luku (read)   tiedoston lukeminen tai kansion sisällön listaaminenw  kirjoitus (write)  tiedostoon tai kansioon kirjoittaminenx  suoritus (execute)  tiedoston suorittaminen tai kansiopuun listaaminen rekursiivisesti

Näiden lisäksi hyväksytään moodit X, s (setuid/setgid) ja t (sticky).

Seuraava komento esimerkiksi lisää kaikille lukuoikeuden tiedostoon testi.txt

$ chmod a+r testi.txt

Symbolisessa muodossa on mahdollista tehdä useita muutoksia kerralla. Tällöin parametriksi annetaan useita edellä kuvatun mukaisia merkkijonoja toisistaan  pilkulla erotettuina. Seuraava lause esimerkiksi poistaa ryhmältä ja "kaikilta" kaikki oikeudet ja lisää omistajalle kirjoitus- ja lukuoikeuden tiedostoon testi.txt:

$ chmod ag-rwx,u+rw testi.txt

 Esimerkkejä 

 Komento  Selityschmod 750 tiedosto nimetyn tiedoston omistusoikeuksiksi rwxr-x--- (omistajalle kaikki oikeudet, ryhmälle luku- ja suoritusoikeus, muille ei oikeuksia)chmod u=rwx,g=rx,o= tiedosto samat oikeudet kuin edellä käyttäen symbolista notaatiotachmod u=rw,go= tiedosto tiedoston omistajalle luku- ja kirjoitusoikeus, ryhmällä ja muilla ei oikeuksiachmod -R u+w,go-w dokumentit muutetaan kansion dokumentit oikeudet ja rekursiivisesti kaikki sen sisältö seuraavasti: lisätään kirjoitusoikeus omistajalle ja evätään se kaikilta muiltachmod = tiedosto poistaa kaikilta kaikki oikeudet tiedostoon käyttäen symbolista notaatiotachmod 777 tiedosto antaa kaikille luokille täydet oikeudet tiedostoon käyttäen numeerista notaatiotachmod 750 public_html asettaa kansiolle public_html oikeuksiksi rwxr-x---chmod 0644 index.html asettaa tiedostolle index.html oikeuksiksi -rw-r--r--, sama kuin u=rw (4+2),go=r (4), 0 alussa tarkoittaa, ettei aseteta erikoismoodeja ja se voidaan yhtä hyvin jättää poiskin

Muuta

Monissa Unix-versioissa on myös mahdollista tehdä tiedostoille tarkkoja käyttöoikeuslistoja muun muassa yksittäisten käyttäjien ja ryhmien mukaan.  POSIX-standardiin kehitetty ehdotus on myöhemmin vedetty pois mutta useat järjestelmät toteuttavat sen.

Linuxissa käyttöoikeuslistoja käsitellään setfacl ja getfacl -komentojen avulla.

 Muut käyttöjärjestelmät 
Muihin komentoa tukeviin käyttöjärjestelmiin kuuluu Plan 9.https://9p.io/magic/man2html/1/chmod

Komento on myös IBM i -alustalle.

 Katso myös 
 Chown
 Unix

 Lähteet 

Luokka:Unix-ohjelmat
Luokka:Seulonnan keskeiset artikkelit