Přístupová práva v linuxu

Bude nejlepší tuhle problematiku trochu vysvětlit začátečníkům, a rovnou je trošku přiučit příkazové řádce, protože ona není zlá...

No tak tedy k věci, práva souboru zjistíme snadno z výpisu příkazu
ls -l
-rwxr--r-- 1 luke users 0 2007-02-15 13:59 test
práva, to jsou písmenka 2-10 (tedy rwxr--r--)
je nutné číst je po trojicích, tedy rwx r-- r--
co to znamená?
První trojice patří vlastníkovi souboru, to jsem já, luke, vidíte, že je tato informace ve třetím sloupci toho výpisu. Druhá trojice patří skupině, které soubor patří, tedy users, což je vidět ve slouci č.4.
Poslední trojice je pro všechny ostatní.
Konkrétní práva jsou
r=read(čtení)
w=write(zápis)
x=execute(spouštění)
tedy v našem případě můžou všichni soubor číst a vlastník, tedy já zapisovat i spouštět.
A ještě důležitá poznámka: Možná vás zmátlo, že nikdy nejsou práva roota. Je to proto, že root může prostě všechno:-)
Nutno dotat, že právo zápisu umožňuje soubor libovolně měnit, tedy i mazat.

pokud se nám práva nelíbí, můžeme je změnit, na to slouží příkaz chmod. Příkaz je ve tvaru chmod -přepíše práva soubor_nebo_adresář
Přepínače dohledáte pomocí příkazu man chmod, nejdůležitější je R, který provede změnu pro vše uvnitř adresáře.
(použití -R kdekoli vždy dobře zvažte.

Práva se zadávají v různých tvarech, nejjednodušší je to pomocí tří číslic XYZ, kde X určitě práva pro vlastníka, Y pro skupinu a Z pro ostatní. Každá číslice je vlastně desítkový zápis binárního čísla o třech bitech RWX, kde kupodivu R je jednička, když můžeme číst, a nula když ne. Stejně pro W a X. Tedy chceme-li práva nastavit práva na zápis a čtení pro vlastníka a čtení pro skupinu i ostatní, tedy aby ve výpisu ls -l vypadala rw-r--r--, převedeme tři binární čísla 110 100 100 (všimněte si že 0 jsou místo "-", to není náhoda :-) )na tři čísla v desítkové soustavě: 6 4 4
tedy příkaz chmod 644 test
Jestli se povedlo se hned přesvědčíme pomocí ls -l
-rw-r--r-- 1 luke users 0 2007-02-15 13:59 test
A opravdu, povedlo se :-)

No a teď pro ty co nemají rádi převody v soustavách.
Budeme si pamatovat, že r je 4, write je 2 a execute je 1, a výsledné číslo bude takové, že za práva která chceme udělit přičteme tu jejich hodnotu, tedy read + write = 6.
Způsobů změny práv je ale víc, například chceme-li jen nějaké právo přidat, nebo odebrat, můžeme to udělat i jinak pomocí písmenek, které už dobře známe (rwx) + nebo - (přdání / odebrání) a dalších písmenek (u = user (vlastník) g = group (skupina vlastníka) o = ostatní (to zvali z češtiny :D)
tedy našem souboru test, přidáme práva pro spuštění (x) pro nás vlastínka (u) a naši skupinu (g). Nejprve se specifikuje koho se změna týká a pak samotná změna.
chmod ug+x test
pro ug přidáme právo x
výsledek:
-rwxr-xr-- 1 luke users 0 2007-02-15 13:59 test

Tak teď už snad pro nikoho nebude problém nastavit si práva tak, jak potřebuje, bez toho aniž by musel někde složitě klikat.
Za připomínky předem děkuji.

Luke7

Autor: Luke7

Komentáře

fitzjoy odpověděl -

Cau. Dobrej clanek. Mam ale dotaz. Nevis jak menit defaultni nastaveni prav na souboru ktery uzivatel vytvari. Priklad..ted me uzivatele vytvari soubory s rwxr--r-- a ja bych potreboval aby to bylo rwxrwx---

Luke7 odpověděl -

sice starý dotaz, ale možná to někomu pomůže. Na to je tu příkaz umask. Jemu zadáte 3 čísla (ale pozor je to doplněk, takže tam kde chcete mít 7 (rwx) musíte zadat 0, kde 6 (rw-) 1 a pod. Ve vašem případě tedy umask 006.

kriskami odpověděl -

Ahoj Luku7, mohl by tě poprosit o doplnění k těm právům. Mám server (10.3) se Sambou a NFS (samba celkem bez problémů), přes NFS exportovanej adresář s daty. Práva jsou chmodem nastavéná na 2770, ale k některým vnořeným složkám nelze některým klientům přistupovat (teď si uvedomuju, že jsou oba odepíraní na 11 a ten jeden funkční na 10.3). Všichni mountují adresář přes NFS s par. 'rw'. Porovnáním práv v adresářích, které jsou přístupné jsem zjistil, že u těch nepřístupných je na konci 'drwxrws---+' plusko, což bude asi ta chybička. Jak se ho zbavím? Vzhledem k tomu, že se jedná o server v práci, tak díky víc než moc.