Administrarea conturilor utilizatorilor
Un cont reprezinta toate fisierele, resursele si informatiile care apartin
unui utilizator. j4g1gd
ü Crearea unui utilizator
Cele mai multe distributii Linux vin cu un program pentru crearea conturilor.
Exista cateva astfel de programe disponibile. Doua alternative din linie de
comanda sunt adduser si useradd; poate exista, de asemenea si instrumente din
interfata gragica. Fie ca este vorba de un program fie ca este o interfata grafica
sunt putine lucruri de facut.
ü /etc/passwd si alte fisiere informative
Baza de date elementara din Unix este un fisier text, /etc/passwd (numit fisierul
parole), care listeaza toti utilizatorii vazilizi impreuna cu informatiile asociate
lor. Fisierul are cate o linie pentru fiecare nume de utilizator si este impartit
in sapte campuri:
1. Utilizator.
2. Parola, in forma incriptata.
3. ID numeric pentru utilizator.
4. ID numeric pentru grup.
5. Numele intreg si alte descrieri ale contului.
6. directorul home.
7. Shell-ul de conectare.
Crearea unui utilizator manual
Pentru a crea un cont de utilizator manual, parcurgeti urmatorii pasi:
ü Editati /etc/passwd cu vipw sau pico si adugati o linie noua pentru contul
nou. Fiti atenti la sintaxa.
ü In mod similar editati /etc/group, daca aveti nevoie sa creati si un
grup nou.
ü Creati directorul principal (home) al utilizatorului folosind mkdir.
ü Copiati fisierele din /etc/skel in noul director home.
ü Stabiliti proprietarul si permisiunile cu comenzile chown si chmod. Optiunea
-R este foarte utila. Drepturile corecte variaza putin, dar in general daca
faceti ca in exemplul urmator totul va fi OK:
cd /home/newusername chown -R username.group . chmod -R go=u,go-w . chmod go= .
ü Stabiliti parola cu comanda passwd.
Dupa ce stabiliti parola contul va fi functional. Nu ar trebui sa stabiliti
parola pana cand nu ati ajuns la final, altfel utilizatorul ar putea sa se conecteze
inainte ca dumneavoastra sa fi terminat de copiat fisierele.
Mai usor
Exista o serie de comenzi care pot sa scrie/citeasca fisiere dar numai utilizatorul
root are drepturile respective; insa sunt utilizate si de alti utilizatori.
Un exemplu il reprezinta comanda "passwd" folosita pentru a schimba
parola.
Daca va uitati la drepturile existente asupra fisierului password veti vedea
probabil ceva asemanator cu FIG 5.1:
FIG 5.1. Drepturile asupra fisierului /etc/passwd
Cand utilizatorul X decide sa-si modifice parola el doar scrie comanda "passwd",
apoi i se cere sa scrie vechea parola o data (pentru a fi sigur ca persoana
care modifica parola este utilizatorul insasi si nu o alta persoana care profita
de conexiunea uitata deschisa a cuiva .......) si apoi cere de doua ori parola
noua)(FIG 5.2).
FIG 5.2. Comanda passwd
In exemplul de mai sus am introdus doua erori pentru a arata faptul ca sistemul
verifica existenta unor parole triviale. Acest lucru nu se intampla la toate
distributiile Linux!
Cand tastati parola nu vedeti ce ati tastat asa ca daca nu sunteti siguri incercati
combinatia de taste CTRL+U pentru a sterge tot continutul liniei si reintroduceti
parola.
Alegerea parolelor: este complet contraindicat alegerea parolei ca fiind numele
utilizatorului, numele sotului/sotiei, cainelui, sau alte nume familiare, pe
motiv ca sunt foarte usor de ghicit!
O parola buna trebuie sa aiba cat mai multe litere, cifre, alte caractere ca
'%$@#_*&", si, pe cat posibil sa nu fie un cuvant uzual! Pe de alta
parte trebuie sa fie usor de tinut minte, deci trebuie facut un compromis.
Exemple de parole bune: "to1po2gan%", "(min*max)=", "pfdicdp"
(Parola Formata Din Initialele Cuvintelor Dintr-o Propozitie), etc …
Noua parola este apoi scrisa in fisierul "/etc/passwd”.
Deci, cum este posibil ca fisierul "/etc/passwd", in care poate scrie
doar utilizatorul root, sa fie completat de un simplu utilizator care doreste
sa-si modifice parola?
Acest lucru este posibil datorita asa-numitului bit UID. Cu alte cuvinte, acest
bit ofera posibilitatea de a arata ca alt utilizator in timp ce executi un program.
Remarcati faptul ca doar utilizatorul root are dreptul de a scrie in fisierul
/etc/passwd. Acum sa ne uitam la permisiunile asupra programului passwd.
Observati ca exista un "s" acolo unde ne asteptam sa fie un "x"
pentru a indica dreptul de executie pemtru proprietar. "S" indica
faptul ca bitul set UID este atribuit.
Avand atribuit bitul UID, atunci cand executati programul passwd ca utilizator
obisnuit, programul va fi executat ca si cu m ati fi administrator.
Adaugarea/stergerea utilizatorilor
O treba a administratorilor sistemului Linux este aceea de a sterge sau de a
adauga utilizatori pentru sistemul respectiv. Procedura este insa util de stiut
de toata lumea.
Exista doua modalitati pentru a face acest lucru.
- Puteti edita directfisierele in care este stocata informatia despre utilizatori
(nu prea comfortabil !)
- Puteti utiliza scripturi care sa va ceara anumiti parametri si apoi sa faceti
toate celelalte lucruri pe care doriti.
De obicei aceste scripturi sunt "useradd" si "adduser".
Prezenta lor depinde de distributia Linux. De asemenea si felul in care ele
lucreaza.
De exemplu, in Slackware-Linux comanda "useradd" este diferita de
comanda "adduser", in timp ce in RedHat-Linux este acelasi lucru.
Mai intai sa ne uitam la continutul fisierului "/etc/passwd" (FIG
5.3):
FIG 5.3. Fisierul /etc/passwd
Exista cate o linie pentru fiecare utilizator, in care campurile sunt despartite
de ":" .
Iata sintaxa pentru o linie :
UserName: CriptedPassword: UserID: GroupID: GeneralInfo: HomeDirectory: Shell o UserName (numele utilizatorului)
Este un sir de caractere unic, care identifica, defineste contul. Pentru conturile
personale este asemenea cu numele folosit la login. o Cripted Password (parole incriptate)
Este reprezentarea codata a parolei utilizatorului. Acest camp este stabilit
folosind programul "passwd". Foloseste o schema de codare dificila
dar nu imposibil de spart. Daca primul caracter din fisierul passwd este "*"
(asterisk), atunci contul este inactiv iar utilizatorul cu numele respectiv
nu se poate conecta.
Exemplu:
bill: *: 150: 100: Bill Anderson-Phone 156789: /home/bill: /bin/bash
o UserID (UID)
Este un numar intreg pe care sistemul il foloseste pentru a identifica acel
cont. o GroupID (GID)
Este un numar intreg care se refera la grupul implicit al utilizatorului (vezi
/etc/group) o General Info (informatii generale)
Contine informatii aditionale despre utilizator, cum ar fi: numele real, alte
informatii optionale ca numar de telefon, adresa, etc. o Home Directory (directorul principal al utilizatorului)
Este directorul utilizatorului, pentru uzul personal. Exista un simbol care
face referire la el : "I". o Shell
Este numele programului care ruleaza atunci cand utilizatorul s-a conectat la
sistem. In cele mai multe cazuri este data toata calea, cum ar fi "/bin/bash".
Exemplu
UserName Antony
Cripted Password xtrLYQ7BtNqgQ
User ID 502
Group ID 502
General info not specified
Home Directory /home/Antony
Shell /bin/bash
Acum, adaugam doi noi utilizatori.
Acesta este structura directorului "/home" inainte de a adauga utilizatorii.
FIG 5.4. structura directorului /home
Daca nu va aduceti aminte cum se foloseste comanda "adduser", puteti
folosi aplicatia "man" (sau "Xman" daca folositi XWindows)
precum "man adduser".
Alta soluti este de a tasta comanda fara parametrii:
FIG 5.5. Comanda useradd
Care este rezultatul tastarii liniilor urmatoare ?
adduser -m -g users -p "" Ronald adduser -m -g users -p "" -d /home/no-default-John John
Primul "adduser -m -g users -p "" Ronald" inseamna:
adduser Adauga un utilizator
-m Creaza directorul home al utilizatorului daca nu exista
-g users Atribuie utilizatorul grupului de utilizatori "users"
-p "" Fara parola (utilizatorul poate intra fara parola ...)
Ronald Acesta este numele utilizatorului, UserName (Login), pentru noul utilizator
Observati ca unii parametrii ca UserID, data expirarii , ..... , nu au fost
specificate astfel incat sistemul a pus valori implicite pentru ei.
Al doile exemplu "adduser -m -g users -p "" -d /home/no-default-John
John":
adduser Adauga un utilizator
-m Creaza directorul home daca nu exista
-g users Atribuie utilizatorul grupului de utilizatori "users"
-p "" Fara parola (utilizatorul poate intra fara parola ...)
-d /home/no-default-John Numele directorului home este "/home/no-default-John"
John Acesta este numele utilizatorului, UserName (Login), pentru noul utilizator
Asa cum se vede, avem un nou nume pentru directorul home al acestui utilizator.
Implicit ar fi fost John, insa noi l-am modificat.
FIG 5.6. Continutul directorului /home
Fisierul de configurare principal pentru manipularea conturilor este "/etc/passwd",
asa ca sa vedem ce s-a intamplat cu el:
FIG 5.7. Fisierul /etc/passwd
Acesta este fisierul "/etc/group", in care puteti vede un grup "users"
cu codul "100", exact cel prezent in "/etc/passwd" pentru
noii utilizatori Ronald si John.
FIG 5.8. Fisierul /etc/group
Console virtuale
Consola sistemului este alcatuita din tastatura si monitor (care sunt conectate
direct la calculator). Totusi este posibil pentru un utilizator sa foloseasca
mai multe console virtuale, putand deschide astfel mai multe sesiuni de lucru
simultan! Pentru aceasta apasati tastele Alt-F2, iar la promptul login, introduceti
numele si parola dvs. In acest moment ati deschis inca o sesiune de lucru !
Apasand Alt-F1, reveniti inapoi la prima sesiune. De regula sunt activate 7-8
console virtuale, dar pot fi activate mult mai multe 12, 24, sau chiar mai multe.
Pentru a comuta pe consola 5 (de exemplu) se apasa combinatia de taste Alt-F5,
s.a.m.d.. Nu uitati sa faceti "logout" din fiecare la incheierea sesiunii
de lucru.
In acest scop comanda "w" poate fi utila, furnizand informatii despre
consolele virtuale folosite.
In exemplul de mai jos se poate observa ca utilizatorul gxg foloseste consolele
1 si 2 (corespunzatoare combinatiilor Alt-F1 si Alt-F2), utilizatorul root consola
3 (Alt-F3), utilizatorul stud foloseste consola 7 (Alt-F7), iar utilizatorul
stud2 este conectat la calculator prin retea.
Consola 1 se numeste "tty1", consola 2 "tty2", s.a.m.d..
astud@x studi$ w
2:53pm up 24 min, 4 users, load average: 1.00, 1.01, 0.77
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT gxg tty1 2:30pm 2:34 0.15s 0.15s -bash gxg tty2 2:30pm 14:34 1.98s 1.74s /usr/bin/mc -P root tty3 2:48pm 4:05 0.27s 0.27s -bash stud tty7 2:50pm 0.00s 0.35s 0.06s w stud2 ttyp1 x.ro 2:55pm 0.00s 0.24s 0.06s -bash
astud@x studi$
Vizualizarea continutului directoarelor
Iata un exemplu de structura arborescenta de directoare si fisiere prezentate
intr-o alta forma (Lucrul cu directoarele si fisierele este detaliat in capitolele
urmatoare).
.
|-- buli
|-- ftp
| |-- bin
| |-- etc
| |-- lib
| `-- pub
|-- gxg
| |-- nsmail
| `-- rc5
|-- httpd
| |-- cgi-bin
| |-- html
| | `-- manual
| | |-- images
| | |-- misc
| | |-- mod
| | `-- vhosts
| `-- icons
|-- samba
`-- stud
Directorul "ftp" este directorul parinte al directoarelor "bin","etc",
"lib", "pub", iar directorul "pub" este subdirectorul
lui "ftp".
Numele complet al unui subdirector poate fi obtinut adaugand numele directorului
parinte la numele subdirectorului si punand separatorul "/".
agxg@x /i$ ls
Office50 c etc lost+found root usr bin cdrom home mnt sbin var boot dev lib proc tmp w95
Obtinerea unor informatii detaliate referitoare la continutul directoarelor
se face utilizand otiunea -l (optiunea -a ofera, in plus si informatii despre
fisierele ascunse).
agxg@x /i$ ls -l total 84 drwxr-xr-x 2 root root 1024 Jan 7 08:58 Office50 drwxr-xr-x 2 root root 2048 Jan 7 12:54 bin drwxr-xr-x 2 root root 1024 Jan 10 18:42 boot lrwxrwxrwx 1 root root 4 Jan 8 20:41 c -> /w95 drwxr-xr-x 2 root root 1024 Jan 6 03:25 cdrom drwxr-xr-x 3 root root 21504 Jan 10 16:43 dev drwxr-xr-x 26 root root 3072 Jan 10 16:43 etc drwxr-xr-x 8 root root 1024 Jan 10 14:41 home drwxr-xr-x 4 root root 2048 Jan 6 05:10 lib drwxr-xr-x 2 root root 12288 Jan 6 05:00 lost+found drwxr-xr-x 4 root root 1024 Jan 6 05:01 mnt dr-xr-xr-x 5 root root 0 Jan 10 18:42 proc drwxr-xr-x 13 root root 1024 Jan 10 16:49 root drwxr-xr-x 3 root root 2048 Jan 7 09:09 sbin drwxrwxrwt 3 root root 1024 Jan 10 18:44 tmp drwxr-xr-x 20 root root 1024 Jan 6 05:06 usr drwxr-xr-x 16 root root 1024 Jan 6 05:14 var drwxr-xr-x 16 root root 21504 Jan 1 1970 w95
agxg@x /i$
Documentatie si manual. Comanda man.
Una dintre cele mai importante facilitati in Linux este manualul on-line!
Astfel aproape fiecare comanda Linux este insotita de manual!
Manualul poate fi accesat folosind comanda man, in felul urmator:
Exemplu:
agxg@x gxgi$ man passwd
Formatting page, please wait...
PASSWD(1) PAM only applications PASSWD(1)
NAME passwd - update a user's authentication tokens(s)
SYNOPSIS passwd a-ui ausernamei
DESCRIPTION
Passwd is used to update a user's authentication token(s).
Only the superuser may update another user's password by supplying a username. The option, -u, is used to indicate that the update should only be for expired authentication tokens (passwords); the user wishes to keep their non expired tokens as before.
Passwd is configured to work through the Linux-PAM API.
Essentially, it initializes itself as a "passwd" service
with Linux-PAM and utilizes configured password modules to authenticate and then update a user's password.
A simple entry in the Linux-PAM configuration file for this service would be:
#
# passwd service entry that does strength checking of
# a proposed password before updating it.
# passwd password requisite pam_cracklib.so retry=3 passwd password required pam_pwdb.so use_authtok
#
Note, other module-types are not required for this appli cation to function correctly.
EXIT CODE
On successful completion of its task, passwd will complete
with exit code 0. An exit code of 1 indicates an error occurred. Textual errors are written to the standard error stream.
CONFORMING TO
Linux-PAM (Pluggable Authentication modules for Linux).
FILES
/etc/pam.conf - the Linux-PAM configuration file
BUGS
None known.
SEE ALSO pam(8), and pam_chauthok(2).
For more complete information on how to configure this application with Linux-PAM, see the Linux-PAM System
Administrators' Guide at
<https://parc.power.net/morgan/Linux-PAM/index.html>
SimplePAMApps 0.50 1996 Dec 14 1
(END)
Apasand sagetile de la tastatura puteti vedea defiland pagina (in cazul in
care este mai mare decat ecranul). Pentru a termina programul man se apasa tasta
q.
Chiar si comanda man are manual! Acesta poate fi accesat tastand la prompt "man
man" (adica manualul comenzii man).
Exemplu:
agxg@x gxgi$ man man
Formatting page, please wait...
man(1) man(1)
NAME man - format and display the on-line manual pages manpath - determine user's search path for man pages
SYNOPSIS man a-acdfhkKtwWi a-m systemi a-p stringi a-C config_filei
a-M pathi a-P pageri a-S section_listi asectioni name ...
DESCRIPTION man formats and displays the on-line manual pages. This version knows about the MANPATH and (MAN)PAGER environment variables, so you can have your own set(s) of personal man pages and choose whatever program you like ...............
Alte comenzi asemanatoare si foarte utile sunt comenzile whatis si apropos:
Pornirea si inchiderea sistemului
Pornirea (bootarea)
Probabil multi dintre cei care utilizeaza Linuxul sunt indragostiti de felul
in care are loc pornirea sistemului. Multi dintre noi s-au plictisit privind
la ecranele colorate cu logo-uri ale Windows-ului in loc sa afle ce se intampla
in realitate. Daca un sistem Windows crapa trebuie sa te transformi in Sherlock
Holmes si sa investighezi ce s-a intamplat. Cand Linux-ul nu reuseste sa porneasca
fara probleme utilizatorul are foarte multe sanse sa descopere ce s-a intamplat
doar privind ecranele ce se desfasoara la incarcarea sistemului, deoarece sunt
afisate virtual toate sarcinile pe care le realizeaza acesta. Acelasi lucru
se intampla si la oprirea sistemului.
Nucleul (kernelul) Red Hat Linux, inima sistemului de operare, este de obicei
pastrat intr-un fisier compresat. Cand kernel-ul este pornit de catre managerul
de boot (LILO, GRUB), se decompreseaza, initializeaza sistemul video si incepe
verificarea celorlalte componente hardware atasate calculatorului. In timp ce
descopera discurile hard, driverele floppy, placile de retea si asa mai departe,
sunt incarcate si modulele driver corespunzatoare. Pe parcursul acestui proces
sunt afisate pe ecran mesaje in format text. Figurile urmatoare prezinta o parte
din aceste mesaje.
FIG 5.9. Mesaje la consola in timpul procesului de incarcare
FIG 5.10. Mesaje la consola in timpul procesului de incarcare
De la consola, in timpul acestui proces, puteti apasa combinatia de taste
Shift + PageUp pentru a derula inapoi mesajele. Puteti sa vedeti mesajele afisate
in timpul procesului de bootare ruland in orice moment programul dmesg. Fisierele
/var/log/messages vor contine, de asemenea, multe mesaje din procesul de bootare.
In acest moment, kernelul va monta sistemul de fisiere radacina (/) ca read-only
(doar cu drepturi de citire) si va verifica sistemul de fisiere. Daca totul
este gasit in regula atunci sistemul de fisiere radacina va fi montat cu drepturi
read/write (citire/scriere).
Daca apar probleme si kernel-ul nu reuseste sa monteze partitia radacina sau
sunt descoperite probleme grave, kernelul va intra in panica si sistemul se
va opri. Daca discul devine corupt din anumite motive, kernel-ul va asigura
o optiune de rulare a unui program de verificare a sistemului de fisiere cum
ar fi fsck.ext2 prin intermediul unui shell restrans.
Odata ce sistemul radacina de fisiere a fost montat, kernel-ul porneste un program
numit init. Acest program porneste toate celelalte programe. Odata ce init a
terminat de rulat toate programele necesare, sistemul poate fi considerat functional
iar procesul de incarcare terminat.
Ceea ce ruleaza init ca parte a procesului de bootare este foarte personalizabil.
In timpul procesului de incarcare a sistemului, init va rula mai intai scriptul
rc.sysinit si apoi scriptul corespunzator nivelului implicit de rulare. Nivelul
de rulare implicit este stabilit in /etc/inittab utilizand o linie precum urmatoarea:
init:3:initdefault:
In acest caz nivelul implicit este stabilit nivelul 3. Aceasta inseamna ca
init va rula scriptul necesar pentru a pune sistemul in modul de lucru multiutilizator.
Iata in continuare exemplificate utilizarile nivelelor de lucru (run level),
exemplu obtinut prin editarea fisierului /etc/inittab.
FIG 5.11. Editarea fisierului /etc/inittab (runlevel-urile)
Inchiderea sistemului
Puteti executa manual init manual si sa ii spuneti sa schimbe nivelul de lucru
cu un nivel dorit de dumneavoastra. De exemplu,
init 0
va cere programului init sa schimbe nivelul curent cu nivelul 0. Cu alte cuvinte,
sistemul va fi stins. Daca va aflati in modul multiuser (3), comanda precedenta
nu este foarte recomandabila deoarece nu instiinteaza utilizatorii conectati
la sistem ca acesta se va opri.
In mod obisnuit este utilizata comanda shutdown pentru a opri sistemul. Aceasta
comanda trimite tuturor utilizatorilor conectati la sistem un mesaj de avertizare
cu privire la modificarea nivelului de lucru. Aceasta comanda ofera si posibilitatea
programarii in timp a opririi.
Comanda shutdown cere programului init sa schimbe nivelul curent al sistemului
fie cu cel de oprire (halt=0) fie cu cel de repornire (reboot=6). De exemplu,
shutdown -;h now
Aceasta comanda va cere init sa schimbe nivelul cu 0 (oprirea sistemului)
imediat.
Asa cum am spus comanda shutdown permite programarea opririi sistemului la un
moment viitor. De exemplu,
shutdown +10
Va programa oprirea sistemului peste exact 10 minute dupa ce comanda a fost
introdusa de la tastaura. Daca doriti sa anulati oprirea programata puteti folosi
comanda shutdown impreuna cu optiunea -;c. De exemplu,
shutdown -;c
va anula orice programare de oprire a sistemului.
Puteti executa manual init pentru a reporni calculatorul. De exemplu,
init 6
Daca va aflati in modul de lucru multiuser veti observa faptul ca aceasta
comanda nu instiinteaza utilizatorii sistemului despre eveniment, astfel incat
ar fi de preferat sa utilizati comenzile shutdown sau reboot pentru a ceasta.
De exemplu,
shutdown -;r +10
Acesta comanda va reporni sistemul in 10 minute. Toti utilizatorii vor primi
un mesaj de instiintare. Acest lucru le va permite sa-si termine munca si sa-si
salveze fisierele daca este cazul.
Pentru a reporni sistemul imediat puteti folosi:
shutdown -;r now sau reboot
Sintaxa comenzilor
Sintaxa se refera la structura comenzii si specifica optiunile si argumentele
permise. Forma generala a unei comenzi Linux este:
$ comanda a-optiune(i)i aargument(e)i
Obs.: Ce este in paranteza inseamna elemente optionale, adica nu sunt intotdeauna
necesare.
Comanda: Program executabil (specifica ce doresti sa faca sistemul)
Optiune(i): Modifica executabilul (cum doresti sa ruleze sistemul comanda)
Argument: Fisier sau director, incluzand calea sau un text. Daca nu este prevazuta
calea atunci sistemul de operare va utiliza directorul curent.
Trebuie utilizat un spatiu ca delimitator intre fiecare parte a comenzii introduse.
Comenzile in Linux sunt ntotdeauna scrise cu litere mic (lower case). Optiunile
sunt de obicei formate dintr-o singura litera precedata de o liniuta (semnul
minus). Optiunile multiple pot fi combinate utilizand doar o singura liniuta.
Optiunile pot fi scrise cu litere mari sau litere mici in functie de ceea ce
se doreste sa se faca.
Lansarea in executie a unui program
Promtul "$" arata ca sistemul este pregatit sa accepte comenzi de
la utilizator.
Pentru a lansa in executie un program trebuie sa se tasetze numele fisierului
care contine codul executabil.
Exemplu:
agxg@x /i$ pine
Informatiile din paranteza au urmatoarea semnificatie:
- gxg@x inseamna utilizatorul "gxg" inregistrat la calculatorul cu
numele "x"
- "/" inseamna directorul curent (in acest caz este radacina)
Toate aceste informatii impreuna cu semnul $ formeaza promptul.
La unele sisteme, el poate avea mici modificari! Astfel, inainte de semnul "$"
poate aparea numai numele calculatorului, fara numele utilizatorului, dar acestea
sunt setari care se pot schimba.
Aceasta comanda este echivalenta cu :
agxg@x /i$ /usr/bin/pine
/usr/bin/pine reprezinta calea completa spre fisierul (executabil) pine. In
exemplul precedent este optionala deoarece sistemul cauta fisierul "pine"
intr-o lista de directoare (specificate dinainte desigur), printre care si "/usr/bin".
Exista si comenzi care trebuiesc lansate specificand (numai) numele complet!
In caz contrar pe ecran apare mesajul de eroare "command not found",
cu alte cuvinte sistemul nu stie unde este programul respectiv.
Exemplu:
agxg@x /i$ /sbin/repquota
Usage: repquota a-vi a-gi a-ui -a repquota a-vi a-gi a-ui filesys ...
agxg@x /i$ repquota bash: repquota: command not found
De regula principalele comenzi folosite in Linux sunt puse in directorul "/bin"
sau "/usr/bin", iar sistemul este configurat sa caute aceste comenzi
in directoarele amintite.
Acest lucru este foarte convenabil, necesitand efortul minim din partea utilizatorului.
Un alt mod interesant de a ajuta utilizatorul este tasta "Tab"!
Tastati cateva caractere dintr-o comanda si apoi apasati tasta "Tab".
Sistemul va completa pentru dumneavoastra numele comenzii!
In cazul in care incep mai multe comenzi cu caracterele precizate, ve-ti auzi
un bip, iar daca mai apasati inca o data veti vedea pe ecran toate posibilitatile.
Exersand, veti observa ca aceasta tasta "Tab" este rapida, si foarte
utila in cazurile in care nu va amintiti exact unele comenzi.
Exemplu:
agxg@x bini$ ps2 ps2ascii ps2epsi ps2pdf
agxg@x bini$ le less lessecho lesskey let lex
agxg@x bini$
Redirectarea iesirii unei comenzi
In unele cazuri este de dorit ca informatia produsa de o comanda (afisata pe
ecran) sa fie directata intr-un fisier. Pentru aceasta, la sfarsitul comenzii
adaugati semnul ">" urmat de numele fisierului care va fi creat
si va contine aceasta informatie. Pe ecran nu va mai fi afisata aceasta informatie!
Atentie: Daca redirectati output-ul unei comenzi intr-un fisier care deja exista,
tot continutul lui va fi suprascris!
Exemplu:
gxg@x gxgi$ ls -l > ls.txt gxg@x gxgi$
Lansarea in background a unui program
Datorita posibilitatii de a lucra cu mai multi utilizatori deodata, sistemul
poarta denumirea de “sistem multiuser”.
Sistemul de operare Linux este si un sistem multitasking, ceea ce inseamna ca
mai multe programe (procese) pot rula simultan.
Acest sistem de procese numit multitasking este utilizat pentru a aloca timpul
de lucru al procesorului mai multor utilizatori in acelasi timp. In realitate
nu este vorba de procese care se ruleaza in acelasi timp ci unele dupa altele
la intervale de timp de ordinul milisecundelor.
Sistemul de operare aloca timpul in asa fel incat sa lase impresia de continuitate
pentru fiecare utilizator. In timp ce unul dintre acestia lucreaza la terminalul
sau el imparte cu ceilalti resursele de calcul.
Exista doua moduri de a lansa in executie un program: foreground (in fata) si
background (in spate). Modul foreground este asociat cu programele interactive,
care necesita interventia utilizatorului (de la tastatura) si ii transmite informatii
pe monitor. De regula, programele lansate de utilizator sunt lansate in modul
acesta.
Opus modului foreground, modul background este asociat de regula cu acele programe
care nu necesita interventia utilizatorului in timpul desfasurarii lor. Totusi
orice program poate fi lansat in executie in fiecare mod.
Un program se lanseaza in backgroung adaugand semnul "&" la sfarsitul
comenzii.
Exemple de programe care pot fi lansate in foreground sau background
Programul de posta electronica "pine" este un program care prezinta
meniuri utilizatorului, acesta putand alege intre a citi posta primita, a trimite
un nou e-mail, a tipari un mesaj, etc. El este exemplul ideal de program care
ruleaza in foreground.
Programul care primeste posta electronica din retea si o distribuie fiecarui
utilizator este un proces care ruleaza in background.
Un program poate fi lansat in background in felul urmator:
Exemplu:
agxg@x /i$ tar -zcf I/test.tgz /usr/doc/* &
a1i 1119
agxg@x /i$
Avantajul lansarii unui program in background este posibilitatea utilizarii
calculatorului si in timp ce procesul respectiv ruleaza. In exemplul precedent
am folosit comanda tar (utila pentru arhivare/dezarhivarea fisierelor) ("-zcf
I/test.tgz /usr/doc/*" sunt parametrii comenzii "tar" iar semnul
"&" semnifica lansarea in background).
Sistemul raspunde "a1i 1119" si apoi afiseaza promptul asteptand alta
comanda (in timp ce prima ruleaza!) (a1i inseamna ca este primul proces lansat
in background iar 1119 este identificatorul de proces).
Manipularea proceselor. Comenzile "jobs", "fg", "bg",
"ps", "kill"
Asupra unui proces, odata pornit, se pot efectua urmatoarele operatii:
- Terminarea
- Suspendarea
- Reluarea unui proces suspendat
- Mutarea in background
- Aducerea in foreground
- Listarea proceselor
Comanda jobs va arata programele lansate in background de la terminalul curent.
agxg@x /i$ jobs
a1i- Running yes >/dev/null & (wd: I)
a2i+ Running tar -zcf I/test2.tgz usr/doc/* &
agxg@x /i$
Pentru a vedea procesele pornite si de la alte terminale puteti folosi comanda
ps: Comanda "ps" (prescurtare de la Processes Status) este mai tare
decat "jobs". Pentru manipularea unui proces este necesara cunoasterea
identificatorului procesului (PID) furnizat de aceasta comanda.
agxg@x gxgi$ ps
PID TTY STAT TIME COMMAND
287 1 S 0:00 -bash
288 2 S 0:00 -bash
329 2 S 0:00 /usr/bin/mc -P
331 p0 S 0:00 bash -rcfile .bashrc
335 1 R 0:00 ps
agxg@x gxgi$
Terminarea
In unele sitatii este de dorit oprirea fortata a proceselor inainte de terminarea
lor fireasca. Dupa terminarea procesului memoria ocupata se elibereaza. Pentru
aceasta se foloseste comanda "kill".
agxg@x gxgi$ ps
PID TTY STAT TIME COMMAND
287 1 S 0:00 -bash
288 2 S 0:00 -bash
289 3 S 0:00 -bash
329 2 S 0:01 /usr/bin/mc -P
331 p0 S 0:00 bash -rcfile .bashrc
348 1 S 0:01 top
362 3 R 0:00 ps
agxg@x gxgi$ kill 348
agxg@x gxgi$ ps
PID TTY STAT TIME COMMAND
287 1 S 0:00 -bash
288 2 S 0:00 -bash
289 3 S 0:00 -bash
329 2 S 0:01 /usr/bin/mc -P
331 p0 S 0:00 bash -rcfile .bashrc
363 3 R 0:00 ps
agxg@x gxgi$
Daca programul este in foreground (accepta comenzi de la tastatura), atunci
el (de regula) se poate opri folosind combinatia de taste Control-C. Cele doua
metode sunt echivalente pentru ca in fiecare caz sistemul trimite procesului
respectiv semnalul "TERM" pentru incheierea programului.
Suspendarea
Suspendarea unui proces inseamna oprirea lui temporara, cu posibilitatea continuarii
rularii sale. Spre deosebire de terminare, programul "ingheata" in
starea sa la momentul suspendarii, iar memoria ocupata cu acest proces NU este
eliberata.
Pentru suspendarea unui program care ruleaza in foreground se poate apasa Control-Z.
Daca programul ruleaza in background, pentru stoparea sa trebuie data comanda
"kill" cu parametrul "-STOP"
$ kill -STOP 435
435 reprezinta identificatorul procesului care se doreste a fi stopat.
Acest identificator il puteti afla folosind comanda "ps"
Reluarea unui proces suspendat
In mod analog cu comenzile anterioare, "kill -CONT" permite continuarea
unui proces suspendat. Aceasta continuare se va face in background. Doua comenzi
utile sunt "fg" si "bg": Comanda "fg" continua
in foreground un proces intrerupt, iar comanda "bg" in background.
Aducerea unui proces in foreground
Daca procesul este stopat sau ruleaza in background, aducerea lui in foreground
se face folosind comanda "fg". Daca sunt mai mult de 2 procese in
aceasta stare, comanda "fg" (sau "bg") trebuie urmata de
un numar in felul urmator:
agxg@x gxgi$ jobs
a1i Stopped yes
a2i- Stopped yes
a3i+ Stopped grep k
agxg@x gxgi$ fg 3 grep k
(Ctrl+Z)
a3i+ Stopped grep k
agxg@x gxgi$
Dupa cum se vede din exemplul anterior, procesele sunt numerotate in ordine
crescatoare, iar numarul corespunzator fiecarui proces il putem afla folosind
comanda "jobs". Acest numar este diferit de PID (identificatorul procesului)
aflat prin comanda "ps" (Processes Status).
Mutarea unui proces in background
Pentru a muta un proces (care ruleaza in foreground) in background, se poate
proceda in felul urmator: apasati Control-Z pentru a opri procesul. In acest
moment procesul este suspendat. Tastati comanda "bg" pentru a continua
in background procesul stopat. Pentru aducerea lui in foregroung, tastati comanda
"fg".