University of Turku

Unix tiedostosuojaukset

Lyhyt oppimäärä

Tiedostojen ja hekemistojen suojaaminen on välttämätöntä !

Ei pelkästään siksi, ettei halua toisten näkevän omia tiedostojaan, vaan myös siksi, että suojaamaton tiedosto vaarantaa koko järjestelmän turvallisuuden. Esimerkiksi, mikäli tiedostossa suojausbitit ovat tilassa '777', kuka tahansa pääsee korvaamaan tiedoston suoritettavalla ohjelmalla ja suorittamaan sen. Jos ohjelman laatijalla on pahoja aikeita, hän voi sotkea koko järjestelmän.

Suojaus tapahtuu tiedostojen suojaus -'atribuuteilla'. Jokaiseen tiedostoon ja hakemsitoon on litetty joukko ohjaustavuja, joista on varattu bittejä myös tähän käyttöön. Otetaan esimerkiksi leikkaus sisällysluettelosta:

drwxr-xr-x	2 virtanen  users        1024 May 22  2004 datahakemisto
-rwxr--r--	1 virtanen  users        6875 Nov 28 17:06 muista.txt
Tiedostolistausrivin alussa olevat 'drwxrwxrwx' -kirjaimet kuvaavat suojausbittejä.
Jaetaan ne ryhmiin seuraavasti:
        
	d rwx rwx rwx
	t  U   G   O
Rivin ensimmäinen kirjain 'd' ilmoittaa että kyseisellä rivillä oleva kyseessä hakemisto. tällä bitillä voi olla seuraavat arvot:
  • d = directory
  • l = symbolic link
  • s = socket
  • p = named pipe
  • - = regular file
  • c= character (unbuffered) device file special
  • b=block (buffered) device file special

Rivin ensimmäinen rwx -ryhmä määrää omistajan (u) oikeudet tiedostoon / hakemistoon. Tässä tapauksessa 'virtanen'.
Rivin toinen rwx -ryhmä määrää omistajan ryhmän (g) oikeudet tiedostoon / hakemistoon. Tässä tapauksessa 'users'
Rivin kolmas rwx -ryhmä määrää kaikkien muiden (o) oikeudet tiedostoon / hakemistoon.

'rwx' -merkinnässä voidaan käyttää seuraavia kirjaimia:


r (read) -lukuoikeus tiedostoon
w (write) -kirjoitusoikeus
x (execute)-suoritusoikeus / käyttöoikeus hakemistoon

Jätetään harvemmin käytettävät s, t ja X -bitit kotiläksyksi.

Tiedostooikeudet asetetaan komennolla ' chmod ' seuraavasti:
chmod kohde merkki suojaus tiedosto

Kohde on joku kirjaimista 'u', 'g' tai 'o' tai näiden yhdistelmä.
Merkki on joko '+' , '-' tai '=' .
Suojaus on joko 'r', 'w', 'x', 'X', 's' tai 't' Samalla rivillä voi olla useampia asetuksia pilkulla erotettuina.

Esimerkiksi pari huonoa:

	`chmod g-w file'  poistaa ryhmältä kirjoitusoikeuden tiedostoon,
	`chmod  ug-w file' poistaa ryhmältä ja käyttäjältä kirjoitusoikeuden tiedostoon.
	`chmod go+rx file' lisää ryhmälle ja kaikille oikeuden lukea ja suorittaa tiedostoa.
Yhtenä esimerkkinä yksi hieman parempi:
`chmod u=rwx,go= file` Antaa käyttäjälle (omistajalle) kaikki eikä kenellekkään muulle mitään.

Toinen tapa

Suojaukset voi asettaa myös toisin. Annetaan suojauksen kirjaimille numeroarvot seuraavasti:
	r = 4
	w = 2
	x = 1
Näin esimerkiksi rwx = 4 + 2 +1 = 7 sekä rw- = 4 + 2 +0 = 6 sekä -wx = 0 + 2 + 1
Jos siis halutaan itselle kaikki, maailmalle luku- ja suoritus ja ulkomaailmalle vain lukuoikeudet, saadaan merkintä:
	rwx r-x r-- = 4+2+1 4+0+1 4+0+0 = 7 5 4
Nyt voimme antaa komennon:

	chmod 754 file
 tai:
	chmod u=rwx,g=rx,o=r file
 tai:
	chmod ugo=r,ug+x,u+w file
 tai kolmena erillisenä käskynä:
	chmod ugo=r file
	chmod ug+x file
	chmod u+w file

Ylläolevat tavat ovat yhtä hyviä ja johtavat samaan lopputulokseen.

GUID ja UID
Jos sama hakemisto on monen käyttäjän käytössä, voidaan hakemiston suojaus asettaa siten, että jokainen sinne talletettava tiedosto talletetaan samoilla ryhmätunnuksilla. Tällöin ei tarvitse käyttää erikseen chown user:group -komentoa. Annetaan seuraava komento:
	chmod +s hakemisto
	chmod g+s hakemisto

Jos 's' -bitti asetetaan tiedostolle, se antaa suoritettavan tiedoton käyttäjälle samat oikeudet, kuin tiedoston omistajalla tai ryhmällä

Annetaan suorittajalle käyttäjän oikeudet:

	chmod +s tiedosto
Suorittajalla on nyt Virtasen:n oikeudet:
	-rws--x--x   1 Virtanen    luuserit    14024 Sep  9 1999 virus.sh
Annetaan suorittajalle ryhmän oikeudet
	chmod g+s tiedosto
Suorittajalla on nyt luusereiden oikeudet:
	-rwxr-sr-x   1 virtanen   luuserit    12072 Aug 16 1999 toinen_virus.sh

text atribuutti Ainoastaan tiedoston luoja ja root saava muuttaa tai tuhota tiedostoja hakemistossa, kun t -bitti on asetettuna:

chmod +t hakemisto Tuloksena saadaan:

	drwxrwxrwt   13 root     root         4096 Apr 15 08:05 tmp

umask Umask arvo määrää käyttäjän luomien tiedostojen suojausbittien oletusarvon. Umask on kahden komplementti halutusta suojauksesta:
	 666 Default Permission for text file
	-022 Minus the umask value
	-----
	 644 Allowed Permissions

Esimerkin mukaiseksi suojaukseksi tulee:

	-rw-r--r--   1 root     workgrp          14233 Apr  24 10:32 textfile.txt


Ylläoleva on käsitelty myös Unixin ohjeissa. Kokeilepa antaa komento `man chmod`

PTMUSTA at UTU.FI