Mitä ovat oktaali- ja symboliset chmod-tilat?

chmod määrittää tiedoston käyttöoikeudet Linuxissa, macOS:ssä ja muissa Unix-järjestelmissä, ja se hyväksyy ne kahdessa merkintätavassa. Oktaalitila, kuten 755, sisältää yhden numeron omistajalle, ryhmälle ja kaikille muille. Lukuoikeus on 4, kirjoitusoikeus 2 ja suoritusoikeus 1. Symbolinen tila, kuten u=rwx,g=rx,o=rx, nimeää sen sijaan luokat (u omistaja, g ryhmä, o muut, a kaikki) ja käyttöoikeudet (r, w, x).

Symbolisilla tiloilla voi myös muuttaa käyttöoikeuksia sen sijaan, että ne asetettaisiin kaikki kerralla: u+x lisää omistajalle suoritusoikeuden, go-w poistaa kirjoitusoikeuden ryhmältä ja muilta, ja g=u kopioi omistajan käyttöoikeudet ryhmälle. Oktaalitila asettaa aina kaikki käyttöoikeudet, joten muutoksen oktaalitulos riippuu siitä, millä tilalla tiedosto oli aiemmin.

Työkalun kuvaus

Tämä työkalu muuntaa chmod-tiloja oktaali- ja symbolisen merkintätavan välillä. Valitse lähde- ja kohdemerkintätapa tai jätä lähteeksi automaattinen tunnistus: syötä 755, niin saat tulokseksi u=rwx,g=rx,o=rx, tai syötä symbolinen tila, niin saat oktaaliarvon. Jos kyseessä on muutos, kuten u+x tai a+X, syötä tiedoston nykyinen tila ja näe tila, johon chmod sen asettaisi. Voit myös liittää ls -l -komennon tulostaman käyttöoikeusmerkkijonon, kuten -rwxr-xr-x, tai kokonaisen chmod-komennon.

Esimerkkejä

Oktaali Symbolinen ls -l Tyypillinen käyttö
644 u=rw,go=r -rw-r--r-- Tavalliset tiedostot
755 u=rwx,go=rx -rwxr-xr-x Skriptit, ohjelmat ja hakemistot
600 u=rw,go= -rw------- Yksityiset tiedostot, kuten SSH-avaimet
2775 u=rwx,g=rwxs,o=rx drwxrwsr-x Jaetut hakemistot, jotka säilyttävät ryhmänsä
1777 a=rwx,+t drwxrwxrwt /tmp ja muut jaetut tilapäishakemistot
4755 u=rwxs,go=rx -rwsr-xr-x Ohjelmat, kuten passwd

Ominaisuudet

  • Muuntaa oktaalimuodon symboliseksi ja symbolisen oktaalimuodoksi; suunnan voi vaihtaa vaihtopainikkeella
  • Tunnistaa syötetyn tilan merkintätavan tai muuntaa sen valitsemasi merkintätavan perusteella
  • Käyttää nykyiseen tilaan suhteellisia muutoksia, kuten u+x, go-w, a=r,u+w, g=u ja a+X
  • Käsittelee setuid-, setgid- ja sticky bit -bitit (s, t ja nelinumeroiset oktaalitilat)
  • Kirjoittaa symbolisen tilan kokonaisena (u=rwx,g=rx,o=rx) tai tiiviinä (u=rwx,go=rx)
  • Lukee ja kirjoittaa ls -l -käyttöoikeusmerkkijonoja, mukaan lukien s, S, t ja T
  • Hyväksyy liitettyjä komentoja, kuten sudo chmod -R 755 dir
  • Osoittaa tarkan merkin, jossa tila on virheellinen

Toimintaperiaate

Oktaalitila luetaan enintään neljänä numerona: valinnainen ensimmäinen numero sisältää setuidin (4), setgidin (2) ja sticky bitin (1), ja kolme muuta numeroa sisältävät omistajan, ryhmän ja muiden käyttöoikeudet. Symbolinen tila luetaan lauseke kerrallaan POSIX-kieliopin mukaisesti, ja sitä sovelletaan nykyiseen tilaan samalla tavalla kuin GNU chmod Linuxissa:

  • + lisää käyttöoikeuksia, - poistaa niitä ja = asettaa ne sekä poistaa loput nimetylle luokalle.
  • X lisää suoritusoikeuden vain hakemistoille ja tiedostoille, joilla jollakin käyttäjällä on jo suoritusoikeus.
  • s asettaa setuidin u:n kanssa ja setgidin g:n kanssa. t asettaa sticky bitin o:n, a:n tai luokittelemattoman määrityksen kanssa.
  • Kun luokkaa ei määritetä, kuten muodossa +x, muutos koskee kaikkia paitsi bittejä, jotka umask estää.
  • Hakemistoissa setuid ja setgid säilyvät ennallaan, ellei niitä nimetä tilassa, kuten muodossa g-s.

Symbolinen tuloste asettaa jokaisen bitin eksplisiittisesti, joten tiedostolle saadaan sama tulos riippumatta siitä, mikä tila tiedostolla oli aiemmin. Sticky bit kirjoitetaan erillisenä +t-lausekkeena, koska sekä GNU- että BSD-chmod hyväksyvät sen tässä muodossa.

Vinkkejä

  • Käytä a+X-muotoa yhdessä chmod -R -komennon kanssa, jotta hakemistoista tulee selattavia tekemättä jokaisesta tiedostosta suoritettavaa.
  • chmod 755 ei poista hakemiston setgidiä GNU chmod -komennolla. Poista se komennolla chmod 00755 tai g-s.
  • Ansible ja monet asetustiedostot odottavat alussa olevaa nollaa, kuten muodossa 0755. Ota käyttöön asetus ”Näytä aina 4 oktaalinumeroa”, jotta saat sen.
  • ls -l -merkkijonon jäljessä oleva . tai + merkitsee SELinux-kontekstia tai ACL:ää. Käytä getfacl-komentoa nähdäksesi ACL-merkinnät, joita tila ei näytä.