Tänään 21.10.2018 nimipäiviä viettää: Ursula onnea!

Tiedosto- ja hakemisto- oikeudet

Linuxissa jokaisella tiedostolla ja hakemistolla on määritelty käyttöoikeudet, kuka saa käyttää, ja mitä saa tehdä. Rootin oikeudet ovat luokkaa ylijumala, joka voi tehdä aivan mitä vain. Seuraavassa paneudutaan normaalikäyttäjien oikeuksiin.

  • Kuka saa käyttää
    • Määriteltäviä tasoja on kolme:
      • Käyttäjä (User) tiedostoille ja hakemistoille ei voi määritellä kuin yksi käyttäjä. Käyttäjää tässä yhteydessä on kenties kuvaavampaa ajatella omistajana, se joka voi määritellä ja sallia muille käyttäjille oikeuksia, ainoastaan tiedoston tai hakemiston omistaja voi tehdä tämän (myös root tietenkin).
      • Ryhmä (Group) määritellään ryhmä jolla oikeuksia kyseiseen tiedostoon tai hakemistoon.
      • Muut (Others) voidaan määritellä mitä, jos mitään, oikeuksia halutaan antaa niille jotka eivät ole käyttäjä tai eivät kuulu määriteltyyn ryhmään.
  • Mitä saa tehdä
    • Määriteltäviä oikeuksia on kolme:
      • Luku (Read) Määrittää lukuoikeuden.
      • Kirjoitus (Write) Määrittää kirjoitusoikeuden, käytännössä tarkoittaa sitä että se jolla on kirjoitus oikeus voi myös poistaa kyseisen tiedoston tai hakemiston.
      • Suoritus (eXecute) Määrittää suoritusoikeuden

Kun luot uuden tiedoston, sinä ja ryhmäsi saatte siihen automaattisesti luku- ja kirjoitusoikeudet, muut saavat vain lukuoikeudet, esimerkki:

mara@kone:~$ nano esimerkki.txt
Kirjoitetaan tähänkin tiedostoon jotain sisältöä, näin...
mara@kone:~$ ls -l esimerkki.txt
-rw-r--r-- 1 mara mara 2 2007-08-24 08:11 esimerkki.txt

10 ensimmäisestä merkistä ensimmäinen ilmoittaa tiedoston tyypin, viiva on tiedosto, d tarkoittaisi hakemistoa. Seuraavat kolme merkkiä rw- kertovat käyttäjän oikeudet. Seuraavat kolme merkkiä r-- kertovat ryhmän oikeudet. Viimeiset kolme merkkiä r-- kertovat muiden oikeudet.

Oikeuksien määrittäminen

Oikeuksien määrittämiseen on käytössä käskyt chmod, chgrp ja chown. Lisäksi oikeuksia voidaan tietysti määrittää myös graafisesti resurssien- ja/tai tiedostonhallinnasta käsin.

chmod käskyn määritykset ovat:

+ Lisää oikeuden
- Vähentää oikeuden
r Tiedostolle lukuoikeuden ja hakemistolle listausoikeuden.
w Tiedostoa voidaan kirjoittaa, voidaan myös poistaa koko tiedosto, hakemiston poisto oikeus.
x Tiedosto voidaan suorittaa ohjelmana, hakemistoon voidaan siirtyä.
u Määritetään oikeus tiedoston omistajalle eli käyttäjälle.
g Määritetään oikeudet tiedostoon tai hakemistoon määritellylle ryhmälle.
o Määritetään kaikkien muiden oikeudet
a Määrittää saman oikeuden kaikille (u, g, o) kerralla (a tarkoittaa all).
s Asettaa SUID ja SGID oikeudet.
t Jättää ohjelman muistiin suorituksen jälkeen (sticky bit -oikeus)

Käyttäjä oikeuksia voidaan muuttaa graafisesti tiedostonhallinassa, tai komentotulkilla käskyllä chown.
chown mara:make /home/mara/esimerkki.txt määrittelisi maran kotikansiossa olevan tiedoston esimerkki.txt käyttäjäksi maran ja ryhmäksi maken. Käskyllä chown voidaan siis määrittää käyttäjä ja ryhmä samalla kertaa.

chgrp mara /home/mara/esimerkki.txt määrittelisi maran kotikansiossa olevan tiedoston esimerkki.txt ryhmäksi takaisin mara. Käskyllä chgrp voidaan siis määrittää tiedostolle tai hakemistolle ryhmä.

Seuraavaksi määritellään mitä käyttäjä ja ryhmä saavat tehdä.

Jälleen näitä oikeuksia voidaan muuttaa graafisesti tiedostonhallinassa, tai komentotulkilla nyt käskyllä chmod.
chmod u+rwx /home/mara/esimerkki.txt määrittelisi maran kotikansiossa olevan tiedoston esimerkki.txt käyttäjän (User) mara oikeuksiksi luku (r), kirjoitus (w), ja suoritus (x).

Annetaan vielä ryhmälle (Group) make joka oli jo aiemmin määritelty käskyllä chown, lukuoikeus eli käskytetään:
chmod g+r /home/mara/esimerkki.txt.

Kielletään muilta (Other) tiedoston käyttö kokonaan:
chmod o-rwx /home/mara/esimerkki.txt

Oikeuksia numeroiden avulla

Oikeuksia voidaan määrittää myös numeroiden avulla.

0   000   ---  
1   001   --x  
2   010   -w-  
3   011   -wx  
4   100   r--  
5   101   r-x  
6   110   rw-  
7   111   rwx

Helpoin tapa laskea oikeus on: luku=4, kirjoitus=2 ja suoritus=1. Esimerkki: Jos haluat mahdollistaa muille luku- ja suoritus- oikeudet tiedostoosi, niin komento on: chmod 775 esimerkki.txt

Lisätään käyttäjiä tiettyyn ryhmään

Käskyllä groupadd testi luotaisiin uusi testi -niminen ryhmä (man groupadd, kertoo lisää)..
Käskyllä gpasswd -a mara testi lisättäisiin käyttäjä mara ryhmään testi (man gpasswd, kertoo lisää).

Erikoisempia oikeuksia

setuid ja setgid eivät toimi shell-skripteillä. Syy tähän on turvallisuus, shell-skriptiä olisi liian helppo väärinkäyttää.

setuid

Setuid on vaarallinen, käytännössä setuid-oikeutta käyttää lähinnä root. Esimerkiksi tiedostoihin /etc/passwd ja /etc/shadow pääsee kirjoittamaan vain root, mutta käyttäjienhän pitää päästä vaihtamaan oma salasanansa. Se onnistuu, sillä passwd-ohjelmalla on setuid-oikeus päällä.

setgid

setgid-oikeus hakemistolla tarkoittaa, että hakemistoon luotavat tiedostot saavat saman ryhmän kuin hakemistolla on. Käskyllä: chmod g+s jokukansio saataisiin setgid päälle jokukansio nimiselle hakemistolle.

sticky bit

Lopuksi on vielä sticky bit, epävirallisesti suomennettuna tahmabitti, hakemistoille. Se tarkoittaa, että vain tiedoston omistaja saa poistaa tiedoston - normaalistihan kirjoitusoikeus hakemistolle antaa oikeuden poistaa hakemistosta kaikkia tiedostoja.