% Linux Installation and Getting Started    -*- TeX -*-
% perms.tex
% Copyright (c) 1992, 1993 by Matt Welsh, Larry Greenfield and Karl Fogel
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by
% the copyright for the entire document, in the file "copyright.tex".
%
% Copyright (c) 1998 by Specialized Systems Consultants Inc. 
% <ligs@ssc.com>

\section{Dovoljenja datotek}\label{sec-file-perms}\label{sec-perms}
%\markboth{Učbenik Linuxa}{Dovoljenja datotek}


\index{datoteke!dovoljenja|(}
\index{dovoljenja!datotek|(}
\subsection{Koncepti dovoljenj datotek}

\index{datoteke!dovoljenja!definicija}
\index{dovoljenja!definicija}
\index{datoteke!uporabniško lastništvo}
Ker je na sistemu Linux tipično več kot en uporabnik, Linux ponuja
mehanizem, znan kot \textbf{dovoljenja datotek}, ki ščiti vaše
uporabniške datoteke pred brkljanjem drugih uporabnikov.  Ta mehanizem
omogoča datotekam in imenikom, da so >>last<< določenega uporabnika.
Na primer, ker je Larry ustvaril datoteke v svojem domačem imeniku, je
Larry njihov lastnik in ima do njih dostop.

Linux tudi dovoljuje delitev datotek med uporabniki in skupinami
uporabnikov.  Če Larry tako želi, lahko onemogoči dostop do svojih
datotek, da do njih ne bo mogel dostopati noben drug uporabnik.
Vendar je na večini sistemov privzeto dovoliti drugim uporabnikom
branje svojih datotek, ne pa tudi njihovo spreminjanje ali brisanje.

\index{datoteke!v lasti skupine}
Vsako datoteko si lasti določen uporabnik.  Vendar so datoteke tudi
last določene \textbf{skupine} (angl.\ group) uporabnikov sistema.
Vsak uporabnik se ob stvaritvi uporabniškega računa dodeli vsaj v eno
skupino.  Sistemski upravitelj pa lahko podeli uporabniku dostop do
več kot ene tovrstne skupine.

\index{uporabniki!v skupinah}
\index{skupine}
Skupine navadno določa vrsta uporabnikov, ki dostopajo do stroja.  Na
primer, na univerzitetnem sistemu Linux so lahko uporabniki razdeljeni
v skupine \texttt{studenti}, \texttt{osebje}, \texttt{predavatelji}
ali \texttt{gostje}.  Obstaja tudi nekaj sistemsko definiranih skupin
(kot sta skupini \texttt{bin} in \texttt{admin}), ki jih uporablja sam
sistem za nadzor dostopa do virov -- zelo redko v ti sistemski skupini
spadajo pravi uporabniki.

Dovoljenja so razdeljena v tri glavne oddelke: branje, pisanje in
izvajanje.  Ta dovoljenja so lahko dana trem razredom uporabnikov:
lastniku datoteke, skupini, kateri pripada datoteka, in vsem
uporabnikom, ne glede na skupino.

\index{dovoljenja!za branje}
\index{datoteke!dovoljenja!za branje}
\index{imenik!dovoljenja!za branje}
\index{dovoljenja!za pisanje}
\index{datoteke!dovoljenja!za pisanje}
\index{imenik!dovoljenja!za pisanje}
\index{dovoljenja!za izvajanje}
\index{datoteke!dovoljenja!za izvajanje}
\index{imenik!dovoljenja!za izvajanje}
Dovoljenje za branje pusti uporabniku brati vsebino datoteke ali, v
primeru imenikov, izpis vsebine imenika (z uporabo \texttt{ls}).
Dovoljenje za pisanje dovoljuje uporabniku pisanje ali spreminjanje
datoteke.  Pri imenikih, dovoljenje za pisanje dovoljuje uporabniku
ustvarjanje novih datotek ali brisanje starih datotek v tem imeniku.
Končno, dovoljenje za izvajanje dovoljuje uporabniku pogon datoteke
kot programa ali skripta ukazne lupine (če je datoteka program ali
skript ukazne lupine).  Pri imenikih omogoča posest dovoljenja za
izvajanje uporabniku \texttt{cd} v ta imenik.

\subsection{Razlaga dovoljenj datotek}
\index{dovoljenja!razlaga}
\index{datoteke!dovoljenja!razlaga}
\index{datoteke!izpis dovoljenj z ls@izpis dovoljenj z \texttt{ls}}
\index{ls@\texttt{ls}!za izpis dovoljenj datotek}
Poglejmo primer, ki demonstrira dovoljenja datotek.  Z uporabo ukaza
\texttt{ls} z izbiro \texttt{-l} se prikaže >>dolgi<< izpis imena
datoteke, vključno z dovoljenji za uporabo te datoteke.
\begin{tscreen}
/home/larry/foo\$ \emph{ls -l stuff}\\
-rw-r-{}-r-{}-\ \ \ 1 larry\ \ \ \ users\ \ \ \ \ \ \ \ \ 505 Mar 13 19:05 stuff\\
/home/larry/foo\$
\end{tscreen}

Prvo polje v izpisu predstavlja dovoljenja za uporabo datoteke.
Tretje polje vsebuje lastnika datoteke (to je \texttt{larry}) in
četrto polje je skupina, kateri datoteka pripada (\texttt{users}).
Zadnje polje je očitno ime datoteke (\texttt{stuff}).  Druga polja
bomo obravnavali pozneje.

To datoteko si lasti \texttt{larry}, in pripada skupini
\texttt{users}.  Niz \texttt{-rw-r-{}-r-{}-} po vrsti našteva
dovoljenja, dana lastniku datoteke, skupini datoteke in vsem ostalim.

Prvi znak niza dovoljenj (>>\texttt{-}<<) predstavlja tip datoteke.
Znak >>\texttt{-}<< pomeni, da je to običajna datoteka (za razliko od
imenika ali gonilnika naprave).  Naslednji trije znaki
(>>\texttt{rw-}<<) predstavljajo dovoljenja, podeljena lastniku
datoteke \texttt{larry}.  Črka >>\texttt{r}<< pomeni >>branje<<
(angl.\ \textbf{r}ead) in črka >>\texttt{w}<< pomeni >>pisanje<<
(angl.\ \textbf{w}rite).  Torej, \texttt{larry} ima dovoljenja za
branje in pisanje datoteke \texttt{stuff}.

Kot smo omenili, poleg dovoljenj za branje in pisanje obstaja tudi
dovoljenje za >>izvajanje<< (angl.\ e\textbf{x}ecute) -- predstavlja
ga črka >>\texttt{x}<<.  Vendar je tukaj namesto >>\texttt{x}<< naštet
>>\texttt{-}<<, torej Larry nima dovoljenja za poganjanje te datoteke.
To je v redu, saj datoteka \texttt{stuff} ni program kakršnekoli
vrste.  Seveda, ker je Larry lastnik te datoteke, si lahko podeli
dovoljenja za izvajanje datoteke \texttt{stuff}, če tako želi.  (O tem
bomo spregovorili v kratkem.)

Naslednji trije znaki, (>>\texttt{r-{}-}<<), predstavljajo dovoljenja
skupine do uporabe datoteke.  Skupina, ki si lasti to datoteko, se
imenuje \texttt{users}.  Ker se tukaj pojavlja le >>\texttt{r}<<,
lahko vsak uporabnik, ki pripada skupini \texttt{users}, bere to
datoteko.

Zadnji trije znaki, tudi (>>\texttt{r-{}-}<<), predstavljajo
dovoljenja, podeljena vsem uporabnikom sistema (razen lastnika
datoteke in uporabnikom skupine \texttt{users}).  Spet, ker je
prisoten le >>\texttt{r}<<, lahko drugi uporabniki berejo datoteko, a
ne morejo vanjo pisati ali je izvajati.

Tukaj je nekaj drugih primerov dovoljenj:
\begin{dispitems}
\ditem{\texttt{-rwxr-xr-x}}
Lastnik datoteke lahko bere, piše in izvaja datoteko.  Uporabniki v
skupini datoteke in vsi drugi uporabniki lahko berejo in izvajajo
datoteko.

\ditem{\texttt{-rw-{}-{}-{}-{}-{}-{}-}}
Lastnik te datoteke lahko bere in piše v datoteko.  Do datoteke ne
more dostopati noben drug uporabnik.

\ditem{\texttt{-rwxrwxrwx}}
Vsi uporabniki lahko berejo, pišejo in izvajajo datoteko.
\end{dispitems}

\subsection{Odvisnosti dovoljenj}
\index{dovoljenja!odvisnosti njih}
\index{datoteke!dovoljenja!odvisnosti}
\index{imenik!dovoljenja!odvisnosti}
Dovoljenja za dostop do datoteke so tudi odvisna od dovoljenj za
dostop do imenika, v katerem je datoteka.  Na primer, če so dovoljenja
datoteke nastavljena na \texttt{-rwxrwxrwx}, drugi uporabniki ne
morejo dostopati do datoteke, razen če imajo bralni ali izvajalni
dostop do imenika, v katerem je datoteka.  Na primer, če bi Larry
želel omejiti dostop do vseh svojih datotek, bi lahko nastavil
dovoljenja svojega domačega imenika \texttt{/home/larry} na
\texttt{-rwx-{}-{}-{}-{}-{}-}.  Na ta način noben drug uporabnik nima
dostopa do njegovega imenika in datotek in imenikov v njem.  Larryju
ni treba skrbeti o posameznih dovoljenjih za vsako od njegovih
datotek.

Z drugimi besedami, če želite sploh dostopati do datoteke, morate
imeti izvajalni dostop do vseh imenikov po poti datoteke in dovoljenje
za branje (ali izvajanje) same datoteke.

Uporabniki na sistemu Linux so, navadno, zelo radodarni s svojimi
datotekami.  Običajen nabor dovoljenj za dostop do datotek je
\texttt{-rw-r-{}-r-{}-}, kar omogoča branje datoteke drugim
uporabnikom, a brez vsakih sprememb.  Običajen nabor dovoljenj za
imenike je \texttt{-rwxr-xr-x}, kar omogoča drugim uporabnikom sprehod
po imenikih, a brez ustvarjanja ali brisanja datotek v njih.

Vendar veliko uporabnikov želi obdržati druge uporabnike čimdlje od
njihovih datotek.  Nastavitve dovoljenj datoteke na
\texttt{-rw-{}-{}-{}-{}-{}-{}-} bo preprečevala vsem drugim
uporabnikom dostop do datoteke.  Podobno, nastavitev dovoljenj imenika
na \texttt{-rwx-{}-{}-{}-{}-{}-} prepreči vstop drugim uporabnikom v
ta imenik.

\subsection{Spreminjanje dovoljenj}
\index{dovoljenja!spreminjanje}
\index{datoteke!dovoljenja!spreminjanje}
\index{imenik!dovoljenja!spreminjanje}
\index{chmod@\texttt{chmod}}
Ukaz \texttt{chmod} se uporablja za nastavitev dovoljenj za dostop do
datoteke.  Dovoljenja lahko spreminja le lastnik datoteke.  Skladnja
ukaza \texttt{chmod} je
\begin{tscreen}
chmod \{a,u,g,o\}\{+,-\}\{r,w,x\} \cparam{imena\_datotek}
\end{tscreen}

Na kratko, podajte eno ali več od črk >>a<< (vsi, angl.\
\textbf{a}ll), >>u<< (uporabnik, angl.\ \textbf{u}ser), >>g<<
(skupina, angl.\ \textbf{g}roup) ali >>o<< (ostali, angl.\
\textbf{o}ther).  Potem določite, ali naj se pravice dodajo
(\texttt{+}) ali odvzamejo (\texttt{-}).  Končno, določite še eno ali
več dovoljenj za branje (angl.\ \textbf{r}ead), pisanje (angl.\
\textbf{w}rite) in izvajanje (angl.\ e\textbf{x}ecute).  Nekateri
primeri legalnih ukazov so:
\begin{dispitems}
\ditem{\texttt{chmod a+r stuff}}
To podeli vsem uporabnikom dovoljenje za branje te datoteke.
\ditem{\texttt{chmod +r stuff}}
Kot zgoraj -- če ni določen noben znak od \texttt{a}, \texttt{u},
\texttt{g} ali \texttt{o}, se privzame \texttt{a}.
\ditem{\texttt{chmod og-x stuff}}
Prekliče dovoljenje za izvajanje vsem uporabnikom razen lastniku.
\ditem{\texttt{chmod u+rwx stuff}}
Dovoli uporabniku datoteke branje, pisanje in izvajanje datoteke.
\ditem{\texttt{chmod o-rwx stuff}}
Prekliče dovoljenja za branje, pisanje in izvajanje vsem uporabnikom
razen lastniku in uporabnikom v skupini, v katere lasti je datoteka.
\end{dispitems}

\index{datoteke!dovoljenja|)}
\index{dovoljenja!datotek|)}
