Prístupové práva - {CHMOD} -1

30.10.2007 13:50 | blackhole_socket

Dnes by som velmy rád objasnil pre mnohých ludí ako funguje chmod celkovo (pretože za posledný týžden sa ma to opítalo asi 5ludí)
Slovo chmod určite mnohý poznáte z FTP účtov je to systém pravomocí ktorý sa využíva hlavne na unixových/linuxových serveroch.
CHMOD budeme brať ako prístupové práva ku súboru/.om.
Nazačiatok si tý ktorý používajú linux prípadne nejaký unix-like systém môžu skúsit zistiť práva nejakého suboru :

socket@blackbox:~$ ls - la mysql.php
-rw-r--r--  1 socket socket      997 2007-10-03 14:19 mysql.php

stohto vidíme :

prístupové_práva pocet_pevných_odkazov vlastníka skupinu velkost_v_baitoch datum_poslednej_upravy cas meno_súboru

prístupové práva tohto súboru sú :
-rw-r--r--

"-" : typ súboru
"rw-" práva vlastníka
"r--" práva skupiny
"r--" práva ostatných

Prvý typ súboru zvyčajne vyzerá takto :

"-"  Normálny súbor
"d"  Adresár
"l"  Symbolický odkaz
"s"  Socket
"p"  Rura

Za typom súboru sú tri trojice údajov, ktoré definutú práva užívatela,skupiny a ostatných.
Jednotlicé údaje v každej trojici udávajú či má daná skupina atd. práva :
r  read (môže citať)
w  write (môže subor modifikovať [zapisovať,mazať])
x  eXecute (môže byť subor spustený)

Pokial je príslušné právo pridelené zobrazí sa dané písmenko a pokial nie zobrazí sa namiesto neho pomlčka.
napr:

-rwxrwxr-x

znamená že : ide o normálny súbor | vlastník toho súboru ho može čítať,zapisovať(modifikovať ho) don,spustiť ho .... | skupina môže súbor takisto čítať,modifikovať a spúštať | ostatný môžu súbor čítať a spúšťať ale pozor ! modifikovať ho nemôžu !

Teraz si všimnite že každé právo bud je alebo nieje pridelené ! (zapnuté alebo vypnuté).
Ked sme si to všimli tak sa nato môžeme pozerať ako na sekciu núl a jednotiek.
Napríklad rwx znamená že sú zapnuté všetky tri práva čiže si môžme predstaviť ako 111 (čo v osmičkovej sústave zanmená 7 ) podobne r-x budeme brať ako 101 v dvojekovej sústave to znamená 5.
Teraz pokial horeuvedený popis uplatníme pre celú množinu práv užívatela,skupiny a ostatných tak dostaneme :

rwxr-xr-x
v dvojkovej sústane :
111101101
a v osmickovej prenás dôležitej sústave to bude znamenať práva :
755

teraz sme sa dopracovali tam kde už zrejme vám niečo hovoria tie neznáme čísla ako 777 ,755, 751 atd.

Zmena práv súborov
Prístupové práva ku súborom sa menia príkazom chmod.

chmod práva subor (subor ...)

Aby sme si ukázali ak opoužívať chmod tak si ukžeme príklad :
socket@blackbox:~$ ls -l mysql.php
-rw-r--r-- 1 socket socket 997 2007-10-03 14:19 mysql.php
socket@blackbox:~$ chmod 777 mysql.php
socket@blackbox:~$ ls -l mysql.php
-rwxrwxrwx 1 socket socket 997 2007-10-03 14:19 mysql.php

teraz to rozoberiem : 1. vypísal som práva suboru mysql.php
2. prídal som mu práva 777 (v preklade rwxrwxrvx) príkazom chmod
3. pre dôkaz som vypísal opeť ale už zmené práva súboru mysql.php

Teraz si ešte ukažeme ako sa dá inak využívať chmod.
Ukážem vám jeden dlhý príklad a myslím že každý kto nieje impotentný to stoho pochopí :

socket@blackbox:~$ ls -l mysql.php
-rwxrwxrwx 1 socket socket 997 2007-10-03 14:19 mysql.php
socket@blackbox:~$ chmod -x mysql.php
socket@blackbox:~$ ls -l mysql.php
-rw-rw-rw- 1 socket socket 997 2007-10-03 14:19 mysql.php
socket@blackbox:~$ chmod g-w mysql.php
socket@blackbox:~$ ls -l mysql.php
-rw-r--rw- 1 socket socket 997 2007-10-03 14:19 mysql.php

príkazom chmod g-w som skupine v subore mysql.php odobral práva zápisu pretože g (grup) -skupna a -w znamená odobrať práva modifikácie.
a príkazom chmod -x som pre všetkých odobral práva spustenia pretože som nezadefinoval prekoho to chcem urobiť tak sa to urobilo globalne.
------------------------------------------
Myslím že stoho članku to musel pochopiť každý, Tý ktorý to chcú pochopiť total odporúčam prečítať si aj o statických príznakoch v subore a tak...( suid a guid ).
Dúfam že po tomto članku už nebudem dostávať blbé otázky na túto tému.

    • Re: Prístupové práva - {CHMOD} 30.10.2007 | 23:41
      Avatar fiwo   Používateľ

      Pekne zhrnutie, odporucam po sebe clanok precitat viac krat ;-) je tam zopar chyb nieco som opravil nieco sa mi uz nechcelo.

    • Re: Prístupové práva - {CHMOD} 31.10.2007 | 09:56
      schrapnel   Návštevník

      este aby sme nezabudli, mame typy suborov aj *c* a *b*

      [root@*****:~]# ls -la /dev/vx/dsk/rootdg/rootvol
      brw------- 1 root root 195, 0 Feb 7 2003 /dev/vx/dsk/rootdg/rootvol
      [block device] - hard disk a podobne

      [root@*****:~]# ls -la /dev/vx/rdsk/rootdg/rootvol
      crw------- 1 root root 195, 0 Feb 7 2003 /dev/vx/rdsk/rootdg/rootvol
      [character device] - paska, stream a pod.

    • Re: Prístupové práva - {CHMOD} 31.10.2007 | 15:48
      Avatar kabel   Používateľ

      A este si zabudol na

      s - ktore nastavi user alebo group id pri spustani
      t - ktore neviem presne co robi ale sa dava napr na /tmp adresar
      X - ktore neviem co robi

      s - pouziva sa napriklad na program su, ten musi mat rootovske prava pri spusteni

      ----
      "For everything in nature, there is a balance." - Jor-El of Krypton

      • Re: Prístupové práva - {CHMOD} 31.10.2007 | 17:47
        Joly   Návštevník

        Zdravim,
        t - je takzvaný sticky-bit, používa sa ako si povedal napr. pri zložke /tmp a robi to, že aj keď majú "ostatný" plné práva (rwx) na túto zložku, zmazať ju môže len vlastník (u /tmp je to zvyčajne root).
        No a ešte k tomu číselnému vyjadreniu. Nemusíme si odvodzovať binárnu formu, stačí ak si zapamätáme že read je za 1, write je za 2, a execute je za 4. takže ak chceme nastavit read+exe, stačí spočítať.

        • Re: Prístupové práva - {CHMOD} 31.10.2007 | 17:55
          Avatar blackhole_socket   Používateľ

          dole som spomenul že o statickom prznaku nebudem komentovať a takisto ani o multipoužívatelských právach a multiroot právach v súbore.
          --------------------------------------------------------------------------------
          Linux je ako okena,kvalitný a lacný čistič oken...

        • Re: Prístupové práva - {CHMOD} 01.11.2007 | 20:39
          martin88   Návštevník

          read - 4
          write - 2
          execute - 1

        • Re: Prístupové práva - {CHMOD} 02.11.2007 | 13:52
          wire   Návštevník

          t - je takzvaný sticky-bit, používa sa ako si povedal napr. pri zložke /tmp a robi to, že aj keď majú "ostatný" plné práva (rwx) na túto zložku, zmazať ju môže len vlastník (u /tmp je to zvyčajne root).

          len doplnim, ze pravo zmazat dany subor nemal len vlastnik adresara na ktory je sticky bit ale aj vlastnik suboru ktory do toho adresara nieco nahraje. Priklad ako uzivatelia mate pravo mazat svoje subory z /tmp...

    • Re: Prístupové práva - {CHMOD} 01.11.2007 | 17:43
      Avatar blackhole_matej   Používateľ

      Dost mi tam chybaju detaily o adresaroch, zaklad doplnim:
      r - je mozne vylistovat si adresar
      w - je mozne do adresara zapisovat a mazat z neho subory
      x - je mozne vobec vstupit do adresara
      --> na ~/web-data/... sa zvykne pouzivat napriklad vo forme "rwx-----x", co znamena, ze ak vieme nazov suboru/podadresara, mozeme k nemu pristupovat, ale vypisat si obsah adresara nemozeme (teda 403 namiesto tzv. autoindexu)

      Sticky u adresarov znamena, ze nevlastnik adresara, napriek tomu, ze moze mat "w" (ako clen skupiny, alebo other) na adresar, tak subory, ktorych nie je vlastnikom, nezmaze.
      Pojem "plne prava" je trochu zavadzajuci, pretoze nevlastnik napriklad nemoze menit prava na danom subore/adresari (okrem zmazania a znovuvytvorenia), samozrejme okrem roota.

      • Re: Prístupové práva - {CHMOD} 01.11.2007 | 23:04
        Avatar blackhole_socket   Používateľ

        ak si si nevšimol otom čo dané písmenko znamená som sa zmienil v článku ;-)
        --------------------------------------------------------------------------------
        Linux je ako okena,kvalitný a lacný čistič oken...

        • Re: Prístupové práva - {CHMOD} 01.11.2007 | 23:25
          Avatar blackhole_kepro   Používateľ

          no ja som slepy alebo to tiez nevidim :)
          --
          TxX cms

          • Re: Prístupové práva - {CHMOD} 01.11.2007 | 23:39
            Avatar blackhole_socket   Používateľ

            r  read (môže citať)
            w  write (môže subor modifikovať [zapisovať,mazať])
            x  eXecute (môže byť subor spustený)

            pri adresáry platí len jedna modifikácia a to je vstup pre x
            --------------------------------------------------------------------------------
            Linux je ako okena,kvalitný a lacný čistič oken...

            • Re: Prístupové práva - {CHMOD} 02.11.2007 | 08:43
              Avatar blackhole_matej   Používateľ

              Len to z toho clanku nebolo zrejme, tak som to trochu upresnil. Snad sa za to na mna nehnevas. Dalsi rozdiel medzi "w" u suborov a u adresarov je, ze "w" na adresari znamena, ze moze mazat subory a podadresare, kdezto "w" na subore znamena, ze moze menit jeho obsah.
              Mozno by nebolo zle niekedy spravit druhy diel, kde by sa vysvetlili halusky typu `chmod 2771 /samba/incoming` :)

              • Re: Prístupové práva - {CHMOD} 02.11.2007 | 11:03
                Avatar blackhole_socket   Používateľ

                už aj ja rozmýšlam nad druhým dielom a vysvetlím aj umask atd.
                --------------------------------------------------------------------------------
                Linux je ako okena,kvalitný a lacný čistič oken...

    • Re: Prístupové práva - {CHMOD} -1 02.01.2008 | 18:48
      Eddie   Návštevník

      sudo chmod -R 0777 /

      myslim ze tak nejako som si v minulosti odsral system.
      Stalcil som enter prilis skoro :-D

      • Re: Prístupové práva - {CHMOD} -1 04.01.2008 | 21:00
        Avatar blackhole_kepro   Používateľ

        ako si si tymto mohol odsrat system? akurat si dal vsetky zlozky pristupne vsetkym aj subory ;)
        --
        TxX cms