Käyttöoikeuksien antaminen ja muuttaminen

Jokaiselle Linuxiin tutustuvalle tulee eteen tilanne, jossa käyttöoikeudet eivät riitäkään tiedoston muokkaamiseen (kirjoitusoikeus) tai ohjelman (tai komennon) ajamiseen (suoritusoikeus). Samoin joskus on hyödyllistä kirjoitussuojata tärkeä tiedosto. Käyttöikeuksien muuttaminen tehdään Linuxissa chmod-komenolla. Muuta oikeuksia kuitenkin harkiten, koska jokainen lisää annettu suoritus- tai kirjoitusoikeus lisää myös omalta osaltaan tietoturvallisuusriskiä. Sivun malliesimerkit on otettu konsolissa SuSEsta, Debianista ja Knoppixista omalta koneeltani.

Tarkista käyttöoikeudet käskyllä "ls -l"

Kirjoittamalla konsolissa ls -l näet hakemistolle annetut käyttöoikeudet:

tapsa@tapsa:/mnt> ls -l
total 4
drwxr-xr-x    2 root     root           48 2003-01-25 18:40 mandrake90
drwxr-xr-x    2 root     root           48 2003-03-01 20:46 mandrake91
drwxr--r--   27 root     root         4096 1970-01-01 02:00 windows
tapsa@tapsa:/mnt>

Normaalisti kotihakemistojen oikeudet Linuxissa ovat drwxr-xr-x (tai 755 numeroita käyttäen; numeroiden käyttö on selvitetty hieman myöhemmin).

Samoin jos kirjoitat ls -l tiedoston_nimi näet yksittäiselle tiedostolle annetut käyttöoikeudet:

tapsa@tapsa:~> ls -l .xsession
-rwxr-xr-x    1 tapsa    users        2794 2003-01-25 14:08 .xsession

Jos haluat katsoa piilotettujen tiedostojen käyttöoikeudet, lisää kirjain a listauskomennon 'ls -l' lisäksi: ls -la

-rwxr-xr-x ???

Mitä nuo edellä olevat kirjaimet (merkit) sitten tarkoittavat? Kirjaimilla ja viivoilla on oma merkityksensä seuraavasti:

  1. Ensimmäinen merkki - tarkoittaa tiedostoa. Jos sen tilalla olisi d, kyse olisi hakemistosta. Ensimmäisenä oleva l-kirjain merkitsisi symbolista linkkiä. Myös muitakin mahdollisia merkkejä on kuten merkkilaite (c), lohkolaite (b), putki (p) ja paljon muita.
  2. r = lukuoikeus (read)
  3. w = kirjoitusoikeus (write)
  4. x = suoritusoikeus (execute)
  5. - = ei oikeuksia

Mutta kenellä nuo oikeudet sitten ovat? Parhaiten se selviää, kun jaetaan listaus pienempiin osiin ja tarkastellaan, mitä mikin osa tarkoittaa:

tapsa@tapsa:~> ls -l .xsession
-rwxr-xr-x    1 tapsa    users        2794 2003-01-25 14:08 .xsession
1. -                      kyseessä on tiedosto (merkki 1)
2. rwx                    omistajan (user) oikeudet (merkit 2-4)
3. r-x                    ryhmän (group) oikeudet (merkit 5-7)
4. r-x                    muiden (others) oikeudet (merkit 8-10)
5. 1                      hakemistoon / tiedostoon viittaavien linkkien määrä
6. tapsa                  hakemison / tiedoston omistaja
7. users                  omistajaryhmä
8. 2794                   tiedoston koko
9. 2003-01-25 14:08       viimeinen muokkauspäivä
10. .xsession             tiedostonimi

Eli -rwxr-xr-x tarkoittaa siis, että kyseessä on tiedosto, jossa käyttäjällä (user) on rwx-oikeudet eli luku-, kirjoitus- ja suoritusoikeus. Käyttäjäryhmällä (group) on r-x-oikeus eli luku- ja suoritusoikeus (kirjoitusoikeutta ei ole). Muilla käyttäjillä (others) on samat oikeudet kuin käyttäjäryhmälläkin (group).

Muuta käyttöoikeuksia käskyllä "chmod"

Tiedoston tai hakemiston käyttöoikeuksia (permissions) muutetaan Linuxissa chmod-käskyllä (change mode).

Tiedostoilla ja hakemistoilla voi Linuxissa olla erilaisia käyttäjäkohtaisia oikeuksia, joista käytetään lippu-nimitystä (access flag), joka voi olla joko päällä tai pois. Englanninkielisen access flag tilalla voidaan käyttää myös access bit tai permission bit -nimitystä, joista hyvin selviää, että kyse on bitistä, joka on joko päällä tai pois ja sillä määritellään tietynlainen käyttöoikeus johonkin tiedostoon tai hakemistoon.

Hakemistojen käyttöoikeuksia et pääse muuttamaan tavallisena käyttäjänä (paitsi tietysti omia hakemistoja kotihakemistossasi) vaan saat seuraavan ilmoituksen:

tapsa@tapsa:/> chmod 777 /mnt
chmod: changing permissions of `/mnt': Operation not permitted
tapsa@tapsa:/>

Mutta superuserina (su tai su -) pääset muuttamaan oikeudet (listausta lyhennetty):

tapsa@tapsa:/> su
Password:
tapsa:/ # chmod 777 /mnt
---
tapsa:/ # ls -l
drwxrwxrwx    5 root     root          136 2003-03-03 18:36 mnt
---

Muutetaan nyt oikeudet takaisin entiselleen (listausta lyhennetty):

tapsa:/ # chmod 755 /mnt
---
tapsa:/ # ls -l
drwxr-xr-x    5 root     root          136 2003-03-03 18:36 mnt

Tärkeä valitsin on myös -R (--recursive), joka ulottaa oikeuksien muuttamisen myös alihakemistoihin, esim.:

tapsa:/ # chmod -R 755 /mnt
Käyttöoikeuksien muuttaminen käyttäen numeroita

Edellä muutimme käyttöoikeuksia käyttämällä numeroyhdistelmiä 777 ja775. Mitä ne nyt sitten tarkoittavat?

Kolmen numeron yhdistelmä tarkoittaa omistajalle (user), ryhmälle (group) ja muille (others) annettavia oikeuksia oktaalilukuina (8-järjestelmän lukuina):

Oikeudet koostuvat siis kolmesta numerosta (4, 2, 1) tai niiden yhdistelmästä. Esimerkiksi 7 (luku, kirjoitus, suoritus eli rwx) koostuu luvuista 4 (luku), 2 (kirjoitus) ja 1 (suoritus) eli 4+2+1=7. Samalla tavoin 5 (luku, suoritus eli r-x) koostuu luvuista 4 (luku) ja 1 (suoritus) eli 4+1=5.

Kolmen numeron yhdistelmä 777 tarkoittaa, että kaikilla (user, group, others) on täydet oikeudet (luku = read, kirjoitus = write, suoritus = execute). Numeroyhdistelmä 775 tarkoittaa kaikkia oikeuksia (rwx) omistajalle (user), luku- ja suoritusoikeutta (r-x) omistajaryhmälle (group) sekä luku- ja kirjoitusoikeuksia (r-x) muille (others).

Käyttöoikeuksien muuttaminen - mitä tarkoittaa neljäs, ensimmäisenä oleva numero?

Katsotaan ensin, mitkä ovat luotavien hakemistojen oletusoikeudet tekemällä omaan kotihakemistoon huuhaa-niminen hakemisto:

tapsa@abc:~$ mkdir huuhaa

Oletusoikeudet luodulle hakemistolle ovat:

drwxr-xr-x    2 tapsa    tapsa        4096 2004-05-01 10:49 huuhaa

Katsotaan sitten, mitkä ovat /usr/local/mozilla-hakemiston oletusoikeudet:

root@abc:/usr/local# la
drwxr-s-x   10 root     staff        4096 2004-04-01 20:57 mozilla

Huomaa, että ryhmän oikeus onkin nyt s eikä x kuten normaalisti. Kirjain s tarkoittaa, että hakemistolle on määritelty s-bitti (set group ID eli setgid), jolloin ohjelman suoritusoikeus annetaan ryhmän perusteella eikä tiedoston käyttäjän perusteella. Edellä siis kaikki, jotka kuuluvat staff-ryhmään, voivat käyttää Mozilla-hakemistoa ja käyttää selainta. Otin tarkoituksella Mozillan esimerkkiohjelmaksi, koska monilla on ollut vaikeuksia käynnistää selainta joissakin distroissa puutteellisten käyttöoikeuksien takia.

Huomaa ero x:n ja s:n välillä: x-bitti kertoo, ketkä saavat ajaa ohjelman; s-bitti kertoo, ajetaanko ohjelma normaalisti sen käynnistäneen käyttäjän oikeuksin vai tiedoston omistajan tai ryhmän perusteella.

Myös käyttäjälle voidaan antaa s-bitti (set user ID eli setuid), joka tarkoittaa, että suoritusoikeus annetaan tiedoston omistajan perusteella eikä tiedoston tekijän perusteella. Myös substitute-user-id (suid) -nimitystä voidaan käyttää, joka kuvastaa hyvin 'korvaavaa' käyttäjää. Ryhmästä puhuttaessa voidaan vastaavasti käyttää substitute-group-id (sgid) -nimitystä.

Sticky-bitin käyttö on käytännöllistä, kun hakemistoon halutaan antaa kirjoitusoikeus kaikille (esim. /tmp-hakemisto) mutta kukin käyttäjä voi poistaa vain omia tiedostojaan.

Ohjelman omistaja voi myös sallia ohjelman käytön muille omilla oikeuksillaan, jolloin ohjelmaa kutsutaan SUID-ohjelmaksi. Suid-ohjelmalle annetaan oikeudet esim. seuraavasti (kirjaimilla):

chmod u+s ohjelma

Muista, että suid-oikeuksien asettaminen rootin (pääkäyttäjän) omistamalle ohjelmalle voi saada aikaan turva-aukon systeemissäsi, koska mahdollinen virheellisesti tomiva ohjelma sallii pääsyn järjestelmään. Älä siis anna turhaan lisäoikeuksia kellekään. Toisaalta jotkut ohjelmat vaativat oikein toimiakseen suidin (tai sgid) asettamisen (esim. kppp, xmms, mozilla jne.). Näin siksi, että näiden tiedostojen omistaja on yleensä pääkäyttäjä ja rootin oikeuksin on käytössä korkeampi prioriteetti ohjelmien ajamiseen ja suid antaa 'tehokkaamman user ID':n käyttöön ja sallii pääsyn kaikkiin tarvittaviin tiedostoihin. Tiedostojen omistajan näet 'ls -l' -komennolla.

SUID-ohjelmien ajamisen suid-oikeuksilla voi tarvittaessa estää liittämällä levyosion /etc/fstab-tiedostossa nosuid-optiolla.

Mutta miten s-bitti annetaan? Toistaiseksi olemme käyttäneet kolmen numeron yhdistelmää oikeuksien antamiseen, jolla tarkoitetaan käyttäjälle (u), ryhmälle (g) ja muille (o) annettavia oikeuksia. Lisäoikeudet annetaan käyttämällä neljättä numeroa edeltämään kolmen numeron yhdistelmää seuraavasti:

Ensimmäinen numero voi myös olla nolla (0) mutta silloin se jätetään yleensä pois tarpeettomana.

Muutetaan mozilla-hakemiston oikeudet ensin normaaliksi chmod 755 (drwxr-xr-x), jotta päästään kokeilemaan, miten s-bitti saadaan annettua.

Kokeillaan chmod 4755:

root@abc:/usr/local# chmod 4755 mozilla
drwsr-xr-x   10 root     staff        4096 2004-04-01 20:57 mozilla

Upsista. Nyt muutimmekin vahingossa käyttäjän x-bitin (suoritusoikeus) s-bitiksi (set user ID) eikä ryhmän (set group ID) kuten oli tarkoitus. Muutetaan takaisin alkutilaan chmod 755 (drwxr-xr-x), jolloin pääsemme aloittamaan uudelleen alusta.

Kokeillaan chmod 2755:

root@abc:/usr/local# chmod 2755 mozilla
drwxr-sr-x   10 root     staff        4096 2004-04-01 20:57 mozilla

Nyt saimme s-bitin asetettua ryhmälle, joka tarkoittaa, että suoritusoikeus on annettu käyttäjäryhmän perusteella eikä käyttäjän oikeuksien perusteella.

Tehdään sama kirjaimilla muuttamalla pelkästään ryhmän (g) r-bitti s-bitiksi chmod g+s:

root@abc:/usr/local# chmod g+s mozilla
drwxr-sr-x   10 root     staff        4096 2004-04-01 20:57 mozilla 

Kokeillaan vielä sticky-bitin käyttöä chmod 1755 (1 numeroina annettuna; t kirjaimina annettuna):

root@abc:/usr/local# chmod 1755 mozilla
drwxr-xr-t   10 root     staff        4096 2004-04-01 20:57 mozilla

Muutetaan oikeudet takaisin alkuperäisiksi chmod 2755.

Kun sticky bit on asetettu hakemistolle, niin kuka tahansa voi luoda tiedostoja tehtyyn hakemistoon (tietysti olettaen, että myös x- ja w-bitit ovat päällä), mutta käyttäjät voivat poistaa vain omia tiedostojaan. Sticky-bittiä käytetään /tmp-hakemistossa seuraavasti:

drwxrwxrwt    2 root     root         4096 2004-05-01 09:53 .X11-unix
drwxrwxrwt    8 root     root         4096 2004-05-01 10:01 tmp

Huomaa, että puuttuvat oikeudet /tmp-hakemistoon estävät X:n käynnistymisen.

Käyttöoikeuksien muuttaminen käyttäen kirjaimia

Jos numeroyhdistelmien muistaminen vaikuttaa mahdottomalta, niin käyttöoikeuksia voidaan määritellä myös toisellakin tavalla. Tarkastellaan vielä uudelleen alussa mainittua .xsession-tiedostoa:

tapsa@tapsa:~> ls -l .xsession
-rwxr-xr-x    1 tapsa    users        2794 2003-01-25 14:08 .xsession

Kyseessä on siis tiedosto (-) ja käyttäjäoikeudet ovat käyttäjälle (user) rwx, käyttäjäryhmälle (group) r-x ja muille (others) r-x

Muutetaan nyt kokeeksi hieman oikeuksia käyttäen kirjaimia.

tapsa@tapsa:/> chmod o+w .xsession

Tässä lisätään (+) muille (others) kirjoitusoikeudet (w) tiedostoon .xsession. Nyt listaus näyttää seuraavalta:

tapsa@tapsa:~> ls -l .xsession
-rwxr-xrwx    1 tapsa    users        2794 2003-01-25 14:20 .xsession

Muutetaan nyt oikeudet takaisin entiselleen:

tapsa@tapsa:/> chmod o-w .xsession
tapsa@tapsa:~> ls -l .xsession
-rwxr-xr-x    1 tapsa    users        2794 2003-01-25 14:20 .xsession

Oikeudet (r, w tai x) eri käyttäjille (u = user, g = group ja o = other) annettiin +-merkillä ja poistettin --merkillä. Jos haluat antaa oikeuden kaikille, niin käytä kirjainta a (all), esim. 'chmod a+w .xsession' antaa kirjoitusoikeuden kaikille .xsession-tiedostoon.

Myös =-merkkiä voi käyttää määrittelemään merkin jälkeen annettavia täsmällisiä oikeuksia. Seuraavassa esimerkissä määritellään ryhmän oikeuksiksi r ja x filu-tiedostoon:

chmod g=rx filu

Käytännön esimerkki: skripteille ei tekstitiedostoina anneta suoritusoikeuksia automaattisesti vaan niille pitää antaa ajo-oikeus (suoritusoikeus) erikseen chmod-komennolla:

chmod u+x tiedosto.sh

chattr

Tiedostoilla voi olla myös erilaisia attribuutteja kuten Windowsissa on r (read-only), h (hidden), a (archive).

Linuxissa piilotetut tiedostot ovat .:llä (piste) -alkavia tiedostoja eikä niille tarvita mitään erikoista atrribuuttia, mutta Windowsin read-only -attribuutin antamiseen verrattava (toki huomattavasti laajempi) Linuxin komento atribuuttien muuttamiseen on chattr, jonka yhteydessä käytettävät kaikki mahdolliset attribuutit selviävät esim. sivulta http://www.onlamp.com/linux/cmd/cmd.csp?path=c/chattr. Tutustu myös Linuxin omaan manuaalisivuun 'man chattr'.

Voit lisätä attribuutin +-merkillä ja poistaa --merkillä. Muutama poiminta mahdollisista yleisimmin käytetyistä attribuuteista lienee paikallaan: attribuutti i (immutable) estää tiedoston muuttamisen, attribuutilla a (append only) tiedostoon voi ainoastaan lisätä tietoa ja s (secure) vaikuttaa sen, että tiedosto nollataan täydellisesti sen poistamisen yhteydessä eli sen olemassaolosta ei jää jälkeäkään, joten sitä ei voi palauttaa (undelete) poistamisen jälkeen mitenkään. Ikävä kyllä sanoa mutta chattr-komennon käyttöön törmätään usein vasta, kun koneeseen on hakkeroitu :(

Seuraavassa on vielä malliesimerkki a-attribuutin lisäämisestä tiedostolle (tarvitaan pääkäyttäjän oikedet):

# chattr + a tiedoston_nimi

Käyttäjäryhmät

Käyttäjätunnuksen luonnin yhteydessä luodaan samalla myös käyttäjäryhmä. Esim. 'tapsa'-käyttäjänimen luonnin yhteydessä luodaan myös samanniminen ryhmä 'tapsa'. Komennolla id näet, mihin käyttäjäryhmään kuulut.

tapsa@tapsa:~> id
uid=500(tapsa) gid=100(users) groups=100(users),14(uucp),16(dialout),17(audio),33(video)

Edellä olevassa UID = User ID number ja GID = Group ID number eli pääkäyttäjäryhmä, johon ko. tunnus kuuluu.

Jos kirjoitat groups, näet mihin käyttäjäryhmiin kuulut. Linuxissa voi kuulua samanaikaisesti useampiin käyttäjäryhmiin, josta on hyötyä esim. silloin, jos työskentelee useammassa projektissa yhtäaikaa.

tapsa@tapsa:~> groups
users uucp dialout audio video
tapsa@tapsa:~>

Jos tapsa-käyttäjä ei olisi kuulunut audio-ryhmään aikaisemmin, lisäys ryhmään olisi voitu tehdä adduser-komennolla seuraavasti (ainakin Debianissa):

adduser tapsa audio
Käyttäjäryhmän vaihto

Käyttäjäryhmää, jolla on pääsy kotihakemistoosi, voit vaihtaa komennolla chgrp (change group).

chgrp laskutus hyvitys.lista

Esimerkikssä hyvitys.lista-tiedoston uudeksi käyttäjäryhmäksi muutettiin laskutus.

Omistajanvaihdos

Jos saat joltakin toiselta tiedoston kotihakemistoosi, tiedoston omistajana säilyy kuitenkin tiedoston lähettäjä. Omistajaa voi vaihtaa pääkäyttäjän oikeuksin komennolla chown (change owner).

# chown tapsa tiedosto.txt

Tässä tiedosto tiedosto.txt on nyt tapsan omistuksessa :)

Voit saada omistusoikeuden tiedostoon myös kopioimalla alkuperäisen tiedoston toiseen paikkaan tai toisen nimiseksi ja tuhoamalla sitten alkuperäisen tiedoston.

Vaihdetaan vielä malliksi /usr/local-hakemiston omistaja rootista tapsaksi (otetaan ensin listaus hakemiston oikeuksista):

tapsa:/usr # ls -l
---
drwxr-xr-x   11 root     root          264 2003-02-15 18:35 local
tapsa:/usr # chown tapsa local
tapsa:/usr # ls -l
---
drwxr-xr-x   11 tapsa    root          264 2003-02-15 18:35 local

Annetaan nyt kuitenkin local-hakemiston omistusoikeudet takaisin rootille :)

tapsa:/usr # chown root local

Käyttäjien lisääminen ja salasanan vaihto

adduser, deluser, addgroup, delgroup

Käyttäjät ovat Linuxin kernelille pelkkiä numeroita (nopeampi prosessoroida kuin tekstiä sisätävät nimet) ja jokaiselle käyttäjälle on oma tunnistenumero user id (tai uid). Jokaiselle user id:lle on sitten olemassa käyttäjänimi (username) erillisessä tietokannassa.

Käyttäjän lisääminen tehdään perinteisesti adduser-käskyllä ja poistaminen deluser-käskyllä (userdel -r kayttajatunnus). Ryhmän lisääminen tehdään vastaavasti addgroup- ja poistaminen delgroup-käskyllä. Useimmissa uusimmissa distroissa on myös erillinen graafinen ohjelma käyttäjätietojen muuttamiseen (esim. redhat-config-users). Käyttäjän lisäämisen (adduser) yhteydessä luodaan myös samanninimen käyttäjäryhmä. Esimerkiksi 'samu'-nimisen käyttäjän luonnin yhteydessä luodaan myös 'samu'-käyttäjäryhmä samulle.

Käyttäjän lisääminen adduser-komennolla kysyy myös kaikki muut tarvittavat tiedot ja tekee kotihakemiston ja antaa normaalin käyttäjän käyttöoikeudet. Seuraavassa on mallina 'samu'-nimisen käyttäjän lisääminen Debianissa:

tapsa:/home/tapsa# adduser
Enter a username to add: samu
Adding user samu...
Adding new group samu (1002).
Adding new user samu (1002) with group samu.
Creating home directory /home/samu.
Copying files from /etc/skel
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for samu
Enter the new value, or press return for the default
        Full Name []: Samuel Räikkönen
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [y/n] y
tapsa:/home/tapsa#

Kuten edellä olevasta esimerkistä huomataan, niin hakemistot ja tiedostot uuden käyttäjän kotihakemistoon kopioidaan /etc/skel-hakemistosta (Copying files from /etc/skel). Systeemin ylläpitäjä voi säätää uusien käyttäjien työpöydän jo ennakolta mahdollisimman hienoksi muokkaamalla /etc/skel-hakemistoa halutunlaiseksi. Yleensä kylläkin /etc/skel-hakemisto kannattaa pitää mahdollisimman yksinkertaisena.

Jos haluat muuttaa jälkeenpäin esim. käyttäjän täydellistä nimeä, niin sen voit tehdä komennolla chfn (change the full name). Katso lisätietoa sivulta Changing user properties.

Käyttäjän luonnin yhteydessä käyttäjällä on vain yksi samanniminen käyttäjäryhmä, johon hän kuuluu. Käyttäjälle voi lisätä helposti eri käyttäjäryhmään addgroup-käskyllä. Seuraavassa esimerkissä samu lisätään sudo-ryhmään.

tapsa:/home/tapsa# addgroup samu sudo
Adding user samu to group sudo...
Done.
tapsa:/home/tapsa#

Voit myös muuttaa käyttäjän ensisijaisen ryhmän newgrp-komennolla.

Jos adduser ei toimi omassa distrossasi, kokeile useradd-komentoa (adduser saattaa olla myös symbolinen linkki useradd-komennolle, esim. RH). Sen käyttö Debianissa on hieman hankalampaa ja vaatii mm. käyttöoikeuksien antamisen erikseen (luultavasti distrossasi on silloin graafinen apuohjelma käyttöoikeuksien määrittelemiseen, jonka käyttö on aloittelijalle suositeltavampaa). Seuraavassa esimerkissä on kuitenkin mallina 'useradd'-komennon käyttö:

tapsa:/home/tapsa # useradd tera

Edellä on luotu uusi käyttäjä 'tera', jolle annetaan vielä salasana:

tapsa:/home/tapsa # passwd tera
Changing password for tera.
New password:
Password changed
tapsa:/home/tapsa #

Katso man adduser saadaksesi lisätietoa uusien käyttäjien lisäämisestä. Huolehdi myös uusien käyttäjien oikeuksista (rwx) ainakin omaan kotihakemistoonsa (pitäisi saada oikeudet kyllä oletuksena).

Btw, moni on ihmetellyt, miksi uuden käyttäjän kotihakemistoon on muilla oletuksena lukuoikeus, jolloin oikeudet 'ls -l' -komennolla ovat drwxr-xr-x (0755). Jos ei halua kaikkien käyttäjien lukevan omia tiedostojaan, voi oikeudet muutta hyvinkin, esim. 'chmod 0751' (drwxr-x--x) tai 'chmod 0750' (drwxr-x---). Ehkäpä hyvät oletusoikeudet olisivatkin pelkästään 'drwx------', jotka saat 'chmod 0700'. Ensimmäinen numero jätetään yleensä pois, jos se on nolla (0), koska se on silloin tarpeeton.

Debianissa voit muuttaa uusien käyttäjien oletusoikeutta kirjoittamalla konsolissa:

# dpkg-reconfigure --priority low adduser 

jonka jälkeen eteesi tulee seuraava teksti (sama kuin Debianin asennuksen aikana, jolloin siihen ei yleensä kiinnitetä mitään huomoiota):

                 Adduser

Normally, home directories can be viewed by all users on the system. If
you want to increase the security/privacy on your system, you might want
your home directories only readable by the user. If you are unsure,
enable system wide readable home directories.

This will only affect home directories of users added with the adduser program later.

Do you want system wide readable home directories?

                    <Kyllä>                     <Ei>

Jos vastaat 'ei', niin uusien käyttäjien kohdalla muiden lukuoikeudet on poistettu drwxr-x--x (chmod 751), kun okeudet aikaisemmin olivat oletuksena drwxr-xr-x (chmod 755).

passwd

Salasanaa vaihdetaan komennolla passwd. Ensin kysytään vanhaa salasanaa ja sitten syötetään uusi salasana. Uusi salasana ei saa olla liikaa entisen kaltainen eikä liian yksinkertainen eikä yli 8 merkin pituinen, jos MD5-salasanoja (max. 256 merkkiä) ei ole valittu käyttöön. Seuraavassa esimerkissä on kaikki vaihtoehdot esillä:

tapsa@tapsa:~> passwd
Changing password for tapsa.
Old Password:
New password:
Bad password: too similar
New password:
Bad password: too simple
New password:
Password will be truncated to 8 characters
Re-enter new password:
Password changed

Umask

Umaskilla (Un-Mask) asetetaan tiedostojen oletusoikeudet uusia tiedostoja luotaessa (yleensä 022); chmodilla taas voidaan muuttaa oletusoikeuksia. Umask 022 tarkoittaa, että kirjoitusoikeudet on poistettu ryhmältä (g) ja muilta (o). Oikeudet ovat aina jollakin tapaa rajoitettuja tavalliselle käyttäjälle ja umaskin käytössä onkin kysymys käyttöoikeuksien rajoittamisesta vastakohtana käyttöoikeuksien antamiselle (oletusoikeuksien muuttamiselle) chmod-komennolla.

Bash-shellissä umaskin oletusoikeudet annetaan /etc/profile-tiedostossa ja oletuksena on yleensä umask 022. Voit tarkistaa oletusoikeudet omasta distrostasi tulostamalla näytölle:

$ grep umask /etc/* 2>/dev/null

Oikeuksista (chmod) puhuttaessa käytetään kolmen numeron yhdistelmää, jolla tarkoitetaan omistajalle (u = user), ryhmälle (g = group) ja muille (o = others) annettavia oikeuksia oktaalilukuina:

      0 = ei oikeuksia
      1 = suoritus (x)
      2 = kirjoitus (w)
      3 = kirjoitus ja suoritus (=2+1)
      4 = luku (r)
      5 = luku ja suoritus (=4+1)
      6 = luku ja kirjoitus (=4+2)
      7 = luku, kirjoitus ja suoritus (=4+2+1)

Oikeudet annetaan aina järjestyksessä omistaja - ryhmä - muut.

Oikeuksien rajoittamisesta (umask) puhuttaessa 7 tarkoittaakin 'ei mitään oikeuksia' ja 0 'kaikki oikeudet' - päinvastoin kuin chmodissa. Umask on siis käänteinen komento chmodille!

Umask merkitsee ykkösellä (binääriluku) niitä oikeuksia, joita ei anneta (kysymys on siis oikeuksien rajoittamisesta)! Esim. umask 023 tarkoittaa:

  rwx r-x r--
  000 010 011
  = 0 = 2 = 3

Edellä siis omistajalta (user) ei rajoiteta oikeuksia millään tavoin (rwx), ryhmälle (group) ei anneta kirjoitusoikeutta (r-x) ja muille (others) taas ei anneta kirjoitus- eikä suoritusoikeutta (r--).

Siten esim. umask 002 tarkoittaa, että omistajan (u) ja ryhmän (g) oikeuksia ei ole rajoitettu millään tavoin, mutta muilta (o) on evätty kirjoitusoikeus (luku- ja suoritusoikeus siis kuitenkin on):

  rwx rwx r-x 
  000 000 010
  = 0 = 0 = 2 

Samalla tavoin uusien tiedostojen oletusoikeudet umask 022 (joista aluksi mainittiin) tarkoittavat, että käyttäjällä (u) on täydet oikeudet (rwx), mutta ryhmältä (g) ja muilta (o) on poistettu kirjoitusoikeus (r-x). Toisin sanoen jokaisen luomasi tiedoston oletusoikeuksiksi on rajoitettu (masked) 022, jolloin vain sinulla on oikeus tehdä muutoksia (kirjoitusoikeus) tekemääsi tiedostoon.

  rwx r-x r-x
  000 010 010
  = 0 = 2 = 2

Seuraavassa vielä esimerkki umaskin käytöstä Mandrake 9.2:n /etc/fstab-tiedostosta:

/dev/hda1 /mnt/windows vfat iocharset=iso8859-15,codepage=850,umask=0,defaults 0 0

Voit tarvittaessa kirjoittaa edellä olevan myös muodossa umask=000 (kenenkään oikeuksia ei ole rajoitettu millään tavoin mainitulle Windows-osiolle). Muista että jos fstab-tiedostoon on tehty muutoksia, niin seuraavaksi ajetaan superuserina (su) mount -a, joka päivittää fstabin, jolloin konetta ei tarvitse käynnistää uudelleen.

Lisätietoa

Katso lisätietoa chmodin käytöstä sivulta http://www.onlamp.com/linux/cmd/cmd.csp?path=c/chmod ja Linuxin manuaalisivulta man chmod.

Tutustu myös Finnish Linux User Group FLUG ry:n sivuun http://flug.mpoli.fi/ohjeita/oikeudet.html ja Ilpo Kuivasen sivuun http://cs.stadia.fi/~kuivanen/linux/oikeus.php.

Päivitetty viimeksi: 27.11.2004