| University of Turku | ||
Unix tiedostosuojauksetLyhyt 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.txtTiedostolistausrivin alussa olevat 'drwxrwxrwx' -kirjaimet kuvaavat suojausbittejä. Jaetaan ne ryhmiin seuraavasti: d rwx rwx rwx t U G ORivin ensimmäinen kirjain 'd' ilmoittaa että kyseisellä rivillä oleva kyseessä hakemisto. tällä bitillä voi olla seuraavat arvot:
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 hakemistoonJätetään harvemmin käytettävät s, t ja X -bitit kotiläksyksi.
Tiedostooikeudet asetetaan komennolla '
chmod
' seuraavasti:
Kohde
on joku kirjaimista
'u', 'g' tai 'o'
tai näiden yhdistelmä.
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 tapaSuojaukset voi asettaa myös toisin. Annetaan suojauksen kirjaimille numeroarvot seuraavasti:r = 4 w = 2 x = 1Nä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 4Nyt 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 fileYllä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 tiedostoSuorittajalla on nyt Virtasen:n oikeudet: -rws--x--x 1 Virtanen luuserit 14024 Sep 9 1999 virus.shAnnetaan suorittajalle ryhmän oikeudet chmod g+s tiedostoSuorittajalla 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` |
||