Chmod-komento Linuxissa (tiedostojen käyttöoikeudet)

author
8 minutes, 40 seconds Read

Linuxissa tiedostojen käyttöoikeuksia hallitaan tiedostojen käyttöoikeuksien, attribuuttien ja omistajuuden avulla. Näin varmistetaan, että vain valtuutetut käyttäjät ja prosessit voivat käyttää tiedostoja ja hakemistoja.

Tässä opetusohjelmassa kerrotaan, miten komennolla chmod muutetaan tiedostojen ja hakemistojen käyttöoikeuksia.

Linuxin tiedostojen käyttöoikeudet #

Etukäteen selitetään Linuxin perusoikeusmalli.

Linuxissa jokainen tiedosto liitetään omistajaan ja ryhmään ja sille annetaan käyttöoikeudet kolmelle eri käyttäjäryhmälle:

  • Tiedoston omistaja.
  • Ryhmän jäsenet.
  • Muut (kaikki muut).

Tiedoston omistajuutta voidaan muuttaa komennoilla chownja chgrp.

Kullekin luokalle on kolme tiedosto-oikeustyyppiä:

  • Lukuoikeus.
  • Kirjoitusoikeus.
  • Toteutusoikeus.

Käsitteen avulla voit määrittää, ketkä käyttäjät saavat lukea tiedostoa, kirjoittaa tiedostoon tai suorittaa tiedostoa.

Tiedoston käyttöoikeuksia voi tarkastella lskomennolla:

ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt|- | | | | | | || | | | | | +-----------> 7. Group| | | | | +-------------------> 6. Owner| | | | +--------------------------> 5. Alternate Access Method| | | +----------------------------> 4. Others Permissions| | +-------------------------------> 3. Group Permissions| +----------------------------------> 2. Owner Permissions+------------------------------------> 1. File Type

Ensimmäinen merkki kertoo tiedostotyypin. Se voi olla tavallinen tiedosto (-), hakemisto (d), symbolinen linkki(l) tai mikä tahansa muu erityyppinen tiedosto.

Seuraavat yhdeksän merkkiä edustavat tiedoston käyttöoikeuksia, kolme kolmen merkin kolmikkoa. Ensimmäinen kolmikko osoittaa omistajan oikeudet, toinen ryhmän oikeudet ja viimeinen kolmikko kaikkien muiden oikeudet. Oikeuksilla voi olla eri merkitys tiedostotyypistä riippuen.

Yllä olevassa esimerkissä (rw-r--r--) tarkoittaa, että tiedoston omistajalla on luku- ja kirjoitusoikeudet (rw-), ryhmällä ja muilla on vain lukuoikeudet (r--).

Jokainen kolmesta käyttöoikeuskolmiosta voidaan muodostaa seuraavista merkeistä, ja niillä on erilainen vaikutus riippuen siitä, asetetaanko ne tiedostoon vai hakemistoon:

Lupien vaikutus tiedostoihin

Lupa Merkki Merkin merkitys tiedostoon
Lue - Tiedosto ei ole luettavissa. Et voi tarkastella tiedoston sisältöä.
r Tiedosto on luettavissa.
Kirjoita - Tiedostoa ei voi muuttaa tai muokata.
w Tiedostoa voi muuttaa tai muokata.
Toteuta - Tiedostoa ei voi suorittaa.
x Tiedoston voi suorittaa.
s Jos se löytyy user-tripletistä, se asettaa setuid-bitin. Jos se löytyy group-tripletistä, se asettaa setgid-bitin. Se tarkoittaa myös, että x-lippu asetetaan.
Kun setuid– tai setgid-lippu asetetaan suoritettavaan tiedostoon, tiedosto suoritetaan tiedoston omistaja- ja/tai ryhmäoikeuksilla.
S Sama kuin s, mutta x-lippua ei aseteta. Tätä lippua käytetään harvoin tiedostoissa.
t Jos se löytyy others-triplasta, se asettaa sticky-bitin.
Se tarkoittaa myös, että x-lippu on asetettu. Tämä lippu on hyödytön tiedostoissa.
T Sama kuin t, mutta x-lippua ei aseteta. Tämä lippu on hyödytön tiedostoille.

Oikeuksien vaikutus hakemistoihin (kansioihin)

Linuxissa hakemistot ovat erityyppisiä tiedostoja, jotka sisältävät muita tiedostoja ja hakemistoja.

Lupa Merkintä Merkintä hakemistossa
Lue - Hakemiston sisältöä ei voi näyttää.
r Hakemiston sisältö voidaan näyttää.
(esim. Voit luetella hakemiston sisällä olevat tiedostot komennolla ls.)
Kirjoita - Hakemiston sisältöä ei voi muuttaa.
w Hakemiston sisältöä voi muuttaa.
(esim. Voit luoda uusia tiedostoja, poistaa tiedostoja ..jne.)
Toteuta - Hakemistoa ei voi muuttaa.
x Hakemistossa voi navigoida cd:n avulla.
s Jos se löytyy user-triplasta, se asettaa setuid-bitin. Jos se löytyy group-tripletistä, se asettaa setgid-bitin. Se tarkoittaa myös, että x-lippu on asetettu. Kun setgid-lippu asetetaan hakemistoon, sen sisällä luodut uudet tiedostot perivät hakemiston ryhmätunnuksen (GID) tiedoston luoneen käyttäjän ensisijaisen ryhmätunnuksen sijaan.
setuid ei vaikuta hakemistoihin.
S Samoin kuin s, mutta x-lippua ei aseteta. Tämä lippu on hyödytön hakemistoissa.
t Jos se löytyy others-triplasta, se asettaa sticky-bitin.
Se tarkoittaa myös, että x-lippu on asetettu. Kun hakemiston sticky-bitti on asetettu, vain tiedoston omistaja, hakemiston omistaja tai hallintakäyttäjä voi poistaa tai nimetä uudelleen hakemistossa olevia tiedostoja.
T Sama kuin t, mutta x-lippua ei aseteta. Tämä lippu on hyödytön hakemistoissa.

Käyttämällä chmod #

Komento chmod on seuraavassa yleisessä muodossa:

chmod MODE FILE...

Komennon chmod avulla voit muuttaa tiedoston käyttöoikeuksia joko symbolisella tai numeerisella tilalla tai viitetiedoston avulla. Selitämme tilat tarkemmin myöhemmin tässä artikkelissa. Komento voi hyväksyä argumentteina yhden tai useamman tiedoston ja/tai hakemiston välilyönnillä erotettuna.

Vain root, tiedoston omistaja tai käyttäjä, jolla on sudo-oikeudet, voi muuttaa tiedoston käyttöoikeuksia. Ole erityisen varovainen, kun käytät komentoa chmod, erityisesti silloin, kun käyttöoikeuksia muutetaan rekursiivisesti.

Symbolinen (teksti)menetelmä #

Komennon chmod syntaksi symbolista tilaa käytettäessä on seuraavassa muodossa:

chmod perms… FILE...

Ensimmäinen lippusarja (), users flags, määrittää, minkä käyttäjäluokkien käyttöoikeuksia muutetaan tiedostoon.

  • u – Tiedoston omistaja.
  • g – Ryhmään kuuluvat käyttäjät.
  • o – Kaikki muut käyttäjät.
  • a – Kaikki käyttäjät, sama kuin ugo.

Jos users-lippu jätetään pois, oletusarvo on a eikä umaskin asettamiin oikeuksiin vaikuteta.

Toinen joukko lippuja (), operaatioliput, määrittelee, poistetaanko, lisätäänkö vai asetetaanko käyttöoikeudet:

  • - Poistaa määritetyt käyttöoikeudet.
  • + Lisää määritetyt käyttöoikeudet.
  • = Muuttaa nykyiset käyttöoikeudet määritettyihin käyttöoikeuksiin. Jos =-symbolin jälkeen ei määritetä mitään oikeuksia, kaikki määritetyn käyttäjäluokan oikeudet poistetaan.

Oikeudet (perms...) voidaan asettaa nimenomaisesti käyttämällä joko nollaa tai yhtä tai useampaa seuraavista kirjaimista: r, w, x, X, s ja t. Käytä yhtä kirjainta joukosta u, g ja o kopioidessasi käyttöoikeuksia yhdestä käyttäjäluokasta toiseen.

Kun asetat käyttöoikeuksia useammalle kuin yhdelle käyttäjäluokalle (), käytä pilkkuja (ilman välilyöntejä) erottaaksesi symboliset tilat.

Alhaalla on esimerkkejä komennon chmod käyttämisestä symbolisessa tilassa:

  • Anna ryhmän jäsenille oikeus lukea tiedostoa, mutta ei kirjoittaa eikä suorittaa sitä:

    chmod g=r filename
  • Poista kaikkien käyttäjien suoritusoikeus:

    chmod a-x filename
  • Poistetaan kirjoitusoikeus muilta käyttäjiltä:

    chmod -R o-w dirname
  • Poistetaan luku-, kirjoitus- ja suoritusoikeus kaikilta muilta käyttäjiltä paitsi tiedoston omistajalta:

    chmod og-rwx filename

    Sama onnistuu myös seuraavalla kaavalla:

    chmod og= filename
  • Anna tiedoston omistajalle luku, kirjoitus ja suoritusoikeudet, tiedoston ryhmälle lukuoikeudet ja kaikille muille käyttäjille ei oikeuksia:

    chmod u=rwx,g=r,o= filename
  • Lisää tiedoston omistajan oikeudet niihin oikeuksiin, jotka tiedoston ryhmän jäsenillä on:

    chmod g+u filename
  • Lisää sticky bitti tiettyyn hakemistoon:

    chmod o+t dirname

Numeerinen menetelmä #

Komennon chmod syntaksi numeerista menetelmää käytettäessä on seuraavassa muodossa:

chmod NUMBER FILE...

Käyttäessäsi numeerista toimintatapaa voit asettaa kaikkien kolmen käyttäjäluokan (omistaja, ryhmä ja kaikki muut) oikeudet samanaikaisesti.

NUMBER voi olla kolmi- tai nelinumeroinen numero.

Kun käytetään kolminumeroista numeroa, ensimmäinen numero edustaa tiedoston omistajan oikeuksia, toinen tiedoston ryhmän ja viimeinen kaikkien muiden käyttäjien oikeuksia.

Kullakin kirjoitus-, luku- ja suoritusoikeudella on seuraava numeroarvo:

  • r (luku) = 4
  • w (kirjoitus) = 2
  • x (suoritus) = 1
  • ei oikeuksia = 0

Kerrottu käyttäjäluokka edustaa tietyn käyttäjäryhmän oikeuksien lukumäärää kyseisen ryhmän oikeuksien arvojen summana.

Tiedoston käyttöoikeuksien selvittämiseksi numeerisessa tilassa lasketaan yksinkertaisesti kaikkien käyttäjäluokkien summat. Jos haluat esimerkiksi antaa tiedoston omistajalle luku-, kirjoitus- ja suoritusoikeudet, tiedostoryhmälle luku- ja suoritusoikeudet ja kaikille muille käyttäjille vain lukuoikeudet, toimi seuraavasti:

  • Omistaja: rwx=4+2+1=7
  • Ryhmä: r-x=4+0+1=5
  • Muut: r-x=4+0+0+0=4

Ylläolevan menetelmän avulla päädymme lukuun 754, joka edustaa haluttuja oikeuksia.

Lupien setuid, setgid ja sticky bit asettamiseen käytetään nelinumeroista numeroa.

Kun käytetään nelinumeroista numeroa, ensimmäisellä numerolla on seuraava merkitys:

  • setuid=4
  • setgid=2
  • sticky=1
  • no changes = 0

Seuraavilla kolmella numerolla on sama merkitys kuin käytettäessä kolminumeroista numeroa.

Jos ensimmäinen numero on 0, se voidaan jättää pois, ja tila voidaan esittää 3-numeroisella numerolla. Numeerinen tila 0755 on sama kuin 755.

Numeerisen tilan laskemiseen voidaan käyttää myös toista menetelmää (binäärimenetelmä), mutta se on hieman monimutkaisempi. Useimmille käyttäjille riittää, että he tietävät, miten numeerinen tila lasketaan käyttämällä 4, 2 ja 1.

Voit tarkistaa tiedoston käyttöoikeudet numeerisessa merkintätavassa käyttämällä statkäskyä:

stat -c "%a" filename
644

Tässä on muutamia esimerkkejä siitä, miten komentoa chmod käytetään numeerisessa tilassa:

  • Tiedoston omistajalle annetaan luku- ja kirjoitusoikeudet ja ryhmän jäsenille ja kaikille muille käyttäjille vain lukuoikeudet:

    chmod 644 dirname
  • Tiedoston omistajalle annetaan luku-, kirjoitus- ja suoritusoikeudet, ryhmän jäsenille luku- ja suoritusoikeudet ja kaikille muille käyttäjille ei oikeuksia:

    chmod 750 dirname
  • Antaa luku-, kirjoitus- ja suoritusoikeudet sekä tahmea bitti tietylle hakemistolle:

    chmod 1777 dirname
  • Aseta tiedoston omistajalle luku-, kirjoitus- ja suoritusoikeudet ja kaikille muille käyttäjille ei oikeuksia tiettyyn hakemistoon:

    chmod -R 700 dirname

Viitetiedoston käyttäminen #

Vaihtoehdon --reference=ref_file avulla voit asettaa tiedoston käyttöoikeudet samoiksi kuin määritetyn viitetiedoston (ref_file).

chmod --reference=REF_FILE FILE

Esimerkiksi seuraava komento määrittää tiedoston file1 käyttöoikeudet file2

chmod --reference=file1 file2

Tiedoston käyttöoikeuksien muuttaminen rekursiivisesti #

Jos haluat toimia rekursiivisesti kaikkiin annetun hakemiston alla oleviin tiedostoihin ja hakemistoihin, käytä -R (--recursive)-valintaa:

chmod -R MODE DIRECTORY

Vaihtaaksesi esimerkiksi kaikkien hakemiston /var/www alla olevien tiedostojen ja alihakemistojen käyttöoikeudet 755:

chmod -R 755 /var/www

Operoiminen symbolisiin linkkeihin #

Symbolisten linkkien käyttöoikeudet ovat aina 777.

Vakiossa, kun muutat symlinkin käyttöoikeuksia, chmod muuttaa sen tiedoston käyttöoikeuksia, johon linkki osoittaa.

chmod 755 symlink

Mahdollisuuksien mukaan kohteen omistusoikeuden muuttamisen sijasta saat ilmoituksen ”cannot access ’symlink’: Permission denied” -virhe.

Virhe syntyy, koska useimmissa Linux-jakeluissa symlinkit ovat oletusarvoisesti suojattuja, eikä kohdetiedostoja voi käsitellä. Tämä vaihtoehto on määritetty kohdassa /proc/sys/fs/protected_symlinks. 1 tarkoittaa käytössä ja 0 pois käytöstä. On suositeltavaa, ettei symlinkkien suojausta poisteta käytöstä.

Tiedostojen käyttöoikeuksien muuttaminen massana #

Joskus on tilanteita, joissa tiedostojen ja hakemistojen käyttöoikeuksia pitäisi muuttaa massana.

Yleisin skenaario on vaihtaa rekursiivisesti verkkosivutiedoston käyttöoikeudet arvoon 644 ja hakemiston käyttöoikeudet arvoon 755.

Numeerisen menetelmän käyttäminen:

find /var/www/my_website -type d -exec chmod 755 {} \;find /var/www/my_website -type f -exec chmod 644 {} \;

Symbolisen menetelmän käyttäminen:

find /var/www/my_website -type d -exec chmod u=rwx,go=rx {} \;find /var/www/my_website -type f -exec chmod u=rw,go=r {} \;

Komento find etsii tiedostot ja hakemistot, jotka ovat kohdassa /var/www/my_website, ja välittää jokaisen löytämänsä tiedoston ja hakemiston komennolle chmod, jotta se voi asettaa käyttöoikeudet.

Loppupäätelmä #

Komennolla chmod muutetaan tiedoston käyttöoikeudet. Käyttöoikeudet voidaan asettaa joko symbolisella tai numeerisella tilalla.

Lisätietoa chmod:stä saat chmod manpage:sta.

Similar Posts

Vastaa

Sähköpostiosoitettasi ei julkaista.