Umask

Linux.fista
Versio hetkellä 22. joulukuuta 2015 kello 23.00 – tehnyt Oselotti (keskustelu | muokkaukset)
Siirry navigaatioon Siirry hakuun

umask on komentotulkin sisäinen komento sekä järjestelmäkutsu, jolla muutetaan luotavien tiedostojen oletusoikeuksia. Umask-arvo kertoo mitä oikeuksia luotaviin tiedostoihin järjestelmän ei pidä antaa.

Bashin sisäiselle umask-komennolle vähennettävät oikeudet voi kertoa joko numeerisesti tai kirjaimin, saman tapaan kuin komennolle chmod. Jos arvoa ei määritä, umask kertoo nykyisen arvon. Valitsimilla -p ja -S voi vaikuttaa tulostettavaan muotoon.

Tyypillinen käyttö

umask-arvo asetetaan tyypillisesti komentotulkin käynnistysskripteissä, kuten /etc/profile tai ~/.profile (Bashissa usein bash_profile ja Zsh:ssa zprofile). Jotta arvo asettuisi myös muille kuin komentotulkin kautta käynnistyville ohjelmille, pitää se asettaa sopivassa muussa käynnistysskriptissä. Arvo periytyy lapsiprosesseille.

Tavallisia umask-arvoja ovat 022, 027 ja 077. Yksittäiset numerot kertovat, mitä oikeuksia ei pidä antaa käyttäjälle itselleen, ryhmälle sekä muille. Numero itsessään muodostuu numeroiden 1, 2 ja 4 summasta, jossa 1 vaikuttaa suoritusoikeuteen (hakemistojen osalta oikeuteen käyttää hakemistoa polun osana), 2 kirjoitusoikeuteen ja 4 lukuoikeuteen. Katso lähemmin chmod, jolla muutetaan oikeuksia jälkikäteen, tiedoston oikeudet sekä kansion yhteiskäyttö ryhmässä.

Komento umask 027 jättää käyttäjälle kaikki oikeudet sekä poistaa ryhmältä kirjoitusoikeuden ja muilta käyttäjiltä kaikki oikeudet. Tämä on tavanomainen arvo silloin, kun joitakin tiedostoja haluaa jakaa ryhmän kanssa, mutta koneelle saattaa (muulla ryhmätunnuksella) olla sellaisia, joille ei tahdo näyttää kaikkia tiedostojaan.

umask 077 epää muilta käyttäjiltä kaikki oikeudet. Asetus on sopiva silloin, kun ei tee yhteistyötä koneen muiden käyttäjien kanssa.

umask 022 jättää kaikille käyttäjille muut kuin kirjoitusoikeudet. Arvo sopii jos usein jakaa tiedostoja sellaisten kanssa, joilla ei ole yhteistä ryhmää, eikä tiedostojen salassapitoon ole suurempaa syytä. Tämä on usein oletusasetus.

Yksittäisten hakemistojen ja tiedostojen oikeuksia voi asettaa umask-arvosta riippumatta. Yleensä kannattaa antaa kotihakemistolle "suoritusoikeuden" kaikille, jotta muut pääsevät käsiksi julkisiksi tarkoitettuihin tiedostoihin (~/public_html yms.), mutta lukuoikeuden voi evätä, ettei vahingossa luettavaksi jäänyt arkaluonteinen tiedosto paljastu turhaan:

chmod go=x ~

Vastaavasti kotihakemistossa voi olla salaisiksi ja julkisiksi tarkoitettuja hakemistoja:

chmod go=rx ~/public_html
chmod g=rx,o= ~/ryhmälle_jaetut
chmod go= ~/salaiset

Oktaalikoodit

oktaali-numerot
umask-komennossa
Sallii (jos kysytty)
0 luku, kirjoitus ja suoritus
1 luku ja kirjoitus
2 luku ja suoritus
3 ainoastaan luku
4 kirjoitus ja suoritus
5 ainoastaan kirjoitus
6 ainoastaan suoritus
7 ei oikeuksia

Tekninen kuvaus

Järjestelmä pitää prosessikohtaisesti lukua umask-tiedosta. Kun jokin ohjelma luo tiedoston (esimerkiksi järjestelmäkutsulla open tai mkdir) järjestelmä vähentää oikeuksia umaskin mukaan ohjelman tarjoamista (yleensä väljistä) oikeuksista. Näin ohjelmien ei tarvitse itse välittää käyttäjän haluista jakaa tiedostoja. Ohjelma voi umaskista riippumatta asettaa tiukemmat rajoitukset esimerkiksi tilapäistiedostoille: umask-arvo vähennetään tarjotuista oikeuksista.