% Linux Installation and Getting Started    -*- TeX -*-
% users.tex
% Copyright (c) 1993 by Matt Welsh and Lars Wirzenius
%
% 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{Upravljanje z uporabniki}\label{sec-manage-users}\label{sec-add-user}
%\markboth{Sistemsko upravljanje}{Upravljanje z uporabniki}

Tudi če ste edini uporabnik na vašem sistemu, je pomembno razumeti
vidike upravljanja z uporabniki pod Linuxom.  Imeti bi morali vsaj
račun zase (drugega kot \texttt{root}) za opravljanje večine vašega
dela.

\blackdiamond
Vsak uporabnik bi moral imeti svoj lastni račun.  Le izjemoma je
sprejemljivo, da si več ljudi deli isti račun.  Vprašljiva je varnost,
saj računi edinstveno istovetijo uporabnike sistema.  Imeti morate
možnost slediti, kaj kdo počne.

\subsection{Pojmi upravljanja z uporabniki}
Sistem beleži naslednje informacije o vsakem uporabniku:
\begin{dispitems}

\ditem{\textbf{uporabniško ime}}
Ta identifikator je edinstven za vsakega uporabnika.  Primeri
uporabniških imen so \texttt{larry}, \texttt{karl} in \texttt{mdw}.
Lahko uporabljate črke in številke, kot tudi >>\texttt{\_}<< in
>>\texttt{.}<< (podčrtaj in piko).  Uporabniška imena so navadno
omejena na 8 znakov dolžine.

\ditem{\textbf{uporabniška identifikacijska številka}}
Ta številka, okrajšana kot UID, je edinstvena za vsakega uporabnika.
Sistem običajno beleži uporabnike po njihovih številkah UID,
ne po uporabniškem imenu.

\ditem{\textbf{skupinska identifikacijska številka}}
Ta številka, okrajšana kot GID (iz angl.\ group ID), določa
privzeto skupino uporabnika.  V razdelku~\ref{sec-perms} opisujemo
skupinska dovoljenja.  Vsak uporabnik pripada eni ali več skupinam,
kot določi sistemski upravitelj.

\ditem{\textbf{geslo}}
To je uporabniško šifrirano geslo.  Za nastavljanje in spremembo
uporabniških gesel se uporablja ukaz \texttt{passwd} (iz angl.\ password).

\ditem{\textbf{polno ime}}
Uporabnikovo >>pravo ime<< ali >>polno ime<< se shranjuje poleg
uporabniškega imena.  Na primer, uporabnik \texttt{schmoj} je lahko
v resničnem življenju >>Joe Schmo<<.

\ditem{\textbf{domači imenik}}
To je imenik, v katerega je prvotno postavljen uporabnik po prijavi
in kjer so shranjene njegove osebne datoteke.  Vsakemu uporabniku
pripada domači imenik, ki je navadno lociran pod imenikom \texttt{/home}.

\ditem{\textbf{prijavna ukazna lupina}}
Ta ukazna lupina se zažene za uporabnika po njegovi prijavi.
Primera sta \texttt{/bin/bash} in \texttt{/bin/tcsh}.
\end{dispitems}

Vse te informacije so shranjene v datoteki \texttt{/etc/passwd}.
Vsaka vrstica te datoteke ima obliko
\begin{tscreen}
\footnotesize
uporabniško~ime:šifrirano~geslo:UID:GID:polno~ime:domači~imenik:prijavna~lupina
\normalsize
\end{tscreen}
Primer bi lahko bil
\begin{tscreen}
kiwi:Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash
\end{tscreen}
V tem primeru je prvo polje, >>\texttt{kiwi}<<, uporabniško ime.

Naslednje polje, >>\texttt{Xv8Q981g71oKK}<<, je šifrirano geslo.
Gesla se na sistemu ne shranjujejo v obliki, primerni za človeško
branje.  Geslo se šifrira s seboj kot skrivnim ključem.  Z drugimi
besedami, če želi kdo odšifrirati geslo, ga mora poznati.  Ta oblika
šifriranja je zmerno varna.

Nekateri sistemi uporabljajo >>senčna gesla<< (angl.\ shadow passwords),
pri katerih se informacije o geslu shranjujejo v datoteki
\texttt{/etc/shadow}.  Ker lahko \texttt{/etc/passwd} bere ves svet,
datoteka \texttt{/etc/shadow} priskrbi določeno stopnjo dodatne
varnosti, saj so dovoljenja za dostop do nje precej bolj omejena.
Senčna gesla ponujajo tudi druge lastnosti, kot je prenehanje veljavnosti
gesla po določenem časovnem obdobju.

Tretje polje, >>\texttt{102}<<, je UID.  Ta številka mora biti
različna za vsakega uporabnika.  Četrto polje, >>\texttt{100}<<, je
GID.  Ta uporabnica pripada skupini, oštevilčeni s 100.  Informacije o
skupinah se shranjujejo v datoteki \texttt{/etc/group}.  Glejte
razdelek~\ref{sec-manage-groups} za več informacij.

Peto polje je polno ime uporabnice, >>\texttt{Laura Poole}<<.
Zadnji dve polji sta uporabničin domači imenik (\texttt{/home/kiwi})
in njena prijavna ukazna lupina (\texttt{/bin/bash}), po vrsti.  Ni nujno,
da ima uporabničin domači imenik isto ime, kot je uporabniško ime.
To le pomaga identificirati imenik.

\subsection{Dodajanje uporabnikov}

Ob dodajanju uporabnikov je treba narediti več korakov.  Najprej se
uporabniku dodeli zapis v \texttt{/etc/passwd} z enkratnim
uporabniškim imenom in UID.  Določena morajo biti polja o GID,
uporabniškem imenu in drugih informacijah.  Ustvarjen mora biti
uporabnikov domači imenik, dovoljenja za ta imenik pa morajo biti
nastavljena tako, da je uporabnik lastnik imenika.  V domači imenik
morajo biti nameščene inicializacijske datoteke za ukazno lupino in na
sistemu morajo biti nastavljene druge datoteke (na primer čakalni
imenik za prihajajočo uporabnikovo e-pošto).

Dodajanje uporabnikov na roko ni težko, a če poganjate sistem
z mnogimi uporabniki, je zelo lahko kaj pozabiti.  Najpreprostejši
način za dodajanje uporabnikov je uporaba interaktivnega programa,
ki samodejno osveži vse sistemske datoteke.  Ime tega programa
je \texttt{useradd} ali \texttt{adduser}, odvisno od nameščenega
programja.

Ukaz \texttt{adduser} vzame potrebne informacije iz datoteke
\texttt{/etc/adduser.conf}, ki definira standardno, privzeto
nastavitev za vse nove uporabnike.

Tipična datoteka \texttt{/etc/adduser.conf} je prikazana spodaj.
\begin{tscreen}
\begin{verbatim}
# /etc/adduser.conf: nastavitev programa `adduser'.
# Za popolno dokumentacijo glejte adduser(8) in adduser.conf(5).

# Spremenljivka DSHELL določa privzeto prijavno ukazno lupino
# na vašem sistemu.
DSHELL=/bin/bash

# Spremenljivka DHOME določa imenik, ki vsebuje domače imenike
# uporabnikov.
DHOME=/home

# Če je GROUPHOMES "yes", potem bodo domači imeniki uporabniki
# ustvarjani kot /home/ime-skupine/uporabnik.
GROUPHOMES=no

# Če je LETTERHOMES "yes", potem bodo ustvarjeni domači imeniki
# imeli dodaten imenik - prvo črko uporabniškega imena.  Na primer:
# /home/u/uporabnik.
LETTERHOMES=no

# Spremenljivka SKEL določa imenik, ki vsebuje "skeletne"
# uporabniške datoteke; z drugimi besedami, datoteke, kot je
# vzorčni skript .profile, ki se bodo prepisale v domači
# imenik novega uporabnika, ko je ta ustvarjen.
SKEL=/etc/skel

# Nabor UID-ov za dinamično dodeljevane upravljalne in sistemske
# račune sega od FIRST_SYSTEM_UID do vključno LAST_SYSTEM_UID.
FIRST_SYSTEM_UID=100
LAST_SYSTEM_UID=999

# Nabor UID-ov za dinamično dodeljevane uporabniške račune
# sega od FIRST_UID do vključno LAST_UID.
FIRST_UID=1000
LAST_UID=29999

# Spremenljivka USERGROUPS je lahko nastavljena na "yes" ali "no".
# Če je "yes", je privzeto vsakemu ustvarjenemu uporabniku dodeljena
# lastna skupina za uporabo in njegov domači imenik bo g+s.
# Če je "no", bo vsak novi uporabnik priključen skupini, katere
# gid je USERS_GID (glejte spodaj).
USERGROUPS=yes

# Če je USERGROUPS "no", potem mora biti USERS_GID GID skupine
# `users' (ali druge primerne skupine) na vašem sistemu.
USERS_GID=100

# Če je nastavljen QUOTAUSER, bo za novega uporabnika določena
# privzeta kvota z ukazom `edquota -p QUOTAUSER newuser'
QUOTAUSER=""
\end{verbatim}
\end{tscreen}

Poleg definiranja že nastavljenih spremenljivk, ki jih uporablja
ukaz \texttt{adduser}, \texttt{/etc/adduser.conf} določa tudi, kje
so shranjene privzete sistemske nastavitvene datoteke za vsakega
uporabnika.  V tem primeru se nahajajo v imeniku \texttt{/etc/skel},
kot definira zgornja vrstica \texttt{SKEL=}.  Datoteke, ki so
postavljene v ta imenik, bo ukaz \texttt{adduser}  samodejno namestil
v domači imenik novega uporabnika, podobno kot sistemske, privzete
datoteke \texttt{.profile}, \texttt{.tcshrc} ali \texttt{.bashrc}.

\subsection{Brisanje uporabnikov}

Uporabnike brišemo z ukazom \texttt{userdel} ali
\texttt{deluser}, odvisno od programja, nameščenega na sistem.

Če bi radi začasno >>onemogočili<< uporabniku, da bi se prijavil
v sistem, ne da bi izbrisali njegov račun, preprosto pripnite
zvezdico (>>\texttt{*}<<) v polje za geslo v datoteki \texttt{/etc/passwd}.
Na primer, sprememba vnosa za \texttt{kiwi} v \texttt{/etc/passwd}
\begin{tscreen}
kiwi:*Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash
\end{tscreen}
onemogoča \texttt{kiwi}, da bi se prijavila v sistem.

\subsection{Nastavitev uporabniških atributov}

Ko ste ustvarili uporabnika, boste morda želeli zanj spremeniti
atribute, kot so domači imenik ali geslo.  Najpreprostejši
način za to je neposredna sprememba vrednosti v datoteki
\texttt{/etc/passwd}.  Za nastavitev uporabniškega gesla uporabite
\texttt{passwd}.  Ukaz
\begin{tscreen}
\# \emph{passwd larry}
\end{tscreen}
bo spremenil \texttt{larry}-jevo geslo.  Le \texttt{root} lahko na tak
način spreminja gesla drugih uporabnikov.  Navadni uporabniki lahko
spreminjajo le svoja lastna gesla.

Na nekaterih sistemih ukaza \texttt{chfn} in \texttt{chsh} omogočata
uporabnikom, da si nastavijo svoje polno ime in atribute prijavne
lupine.  Če ne, mora ta atributa zanje spremeniti sistemski
upravitelj.

\subsection{Skupine}\label{sec-manage-groups}

Kot smo že omenili zgoraj, vsak uporabnik pripada eni ali več
skupinam.  Edini pravi namen povezovanja v skupine se nanaša na
dovoljenja za uporabo datotek.  Kot se spomnite iz
razdelka~\ref{sec-perms}, ima vsaka datoteka >>skupinsko lastništvo<<
in nabor skupinskih dovoljenj, ki definirajo, kako lahko uporabniki iz
te skupine dostopajo do datoteke.

Obstaja več skupin, ki jih definira sistem, kot so \texttt{bin},
\texttt{mail} in \texttt{sys}.  Uporabniki ne bi smeli pripadati
nobeni od teh skupin; uporabljajo se za sistemska dovoljenja datotek.
Namesto tega bi morali uporabniki pripadati posamezni skupini, kot
je \texttt{users}.  Vzdržujete lahko tudi več skupin za uporabnike,
kot \texttt{studenti}, \texttt{osebje} in \texttt{predavatelji}.

Datoteka \texttt{/etc/group} vsebuje informacije o skupinah.
Oblika vsake vrstice je
\begin{tscreen}
ime skupine:geslo:GID:drugi člani
\end{tscreen}
Nekatere zgledne skupine so lahko:
\begin{tscreen}
root:*:0: \\
users:*:100:mdw,larry \\
guest:*:200: \\
other:*:250:kiwi
\end{tscreen}
Prva skupina, \texttt{root}, je posebna sistemska skupina, rezervirana
za račun \texttt{root}.  Naslednja skupina, \texttt{users}, je za
običajne uporabnike.  Ima GID 100.  Uporabnika \texttt{mdw} in
\texttt{larry} sta člana te skupine.  Spomnite se, da je v
\texttt{/etc/passwd} vsakemu uporabniku prirejena privzeta številka
GID.  Vendar lahko uporabniki pripadajo več kot eni skupini, tako da
so njihova imena našteta v vrsticah drugih skupin v datoteki
\texttt{/etc/group}.  Ukaz \texttt{groups} našteva, do katerih
skupin imate dostop.

Tretja skupina, \texttt{guest}, je za gostujoče uporabnike in
\texttt{other} za >>druge<< uporabnike.  Uporabnica \texttt{kiwi}
ima dostop tudi do te skupine, poleg tega je privzeto že članica
skupine \texttt{users}, saj je njena številka GID enaka 100.

Polje >>geslo<< v datoteki \texttt{/etc/group} se včasih uporablja
za nastavljanje gesla za skupinski dostop.  To je le redko potrebno.
Za zavarovanje uporabnikov, da se ne bi spremenili v privilegirane
skupine (z ukazom \texttt{newgroup}), nastavite polje z geslom
na >>\texttt{*}<<.

Za dodajanje skupin na vaš sistem lahko uporabljate \texttt{addgroup}
ali \texttt{groupadd}.  Navadno je preprosteje, če sami dodate
vnose v datoteko \texttt{/etc/group}, saj za skupino ni potrebno
nobeno drugo nastavljanje.  Skupino izbrišete preprosto tako, da
izbrišete njen vnos v datoteki \texttt{/etc/group}.
