Sunteți pe pagina 1din 12

Faculty of Electronics Telecommunication and EAOS

Information Technology

Department of Applied Electronics and Embedded Architectures &


Intelligent Systems Operating Systems

4. Laboratory
Main Linux commands

4.1. Introducere în tascurile de administrare a sistemului

Pentru a solicita închiderea calculatorului din linia de comandă, putem folosi comanda:
user@ubuntu:~$ halt
sau
user@ubuntu:~$ shutdown ‐h now
Rulată din contul dumneavoastră, imediat vi se va spune că ar trebui să fiți root pentru a o putea
rula. Utilizatorul de root este un utilizator privilegiat. Doar el poate rula task‐uri administrative,
are acces la toate comenzile, fișierele și serviciile. Practic, sistemul îi aparține lui în totalitate,
având acces la orice resursă existent în sistem. In Ubuntu, dar și în alte SO de tipul Linux înrudite
(de. ex. Raspbian ‐ Raspberry Pi OS), contul de root este invalidat în mod implicit astfel încat
nimeni să nu fie root. Pentru a verifica starea contului de root (sau a oricărui alt cont) utilizați
comanda:
user@ubuntu:~$ sudo passwd ‐S root
root L 05/25/2019 0 99999 7 ‐1
Comanda passwd este utilizată în mod normal la schimbarea parolei utilizatorului current sau
a oricărui alt utilizator. Dar aici, prin intermediul opțiunii -S (sau --status) se afișează informații
despre starea unui anumit cont. Rezultatul acestei comenzi are un număr de 7 campuri cu
următoarea semnificație:
 Numele de login a utilizatorului;

1|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

 Starea parolei: L contul este blocat, NP contul nu are nici o parola, P dacă contul are o
parolă activă;
 Data la care a fost schimbată ultima data parola;
 “Vârsta” minimă a parolei;
 “Vârsta” maximă a parolei;
 Perioada de avertizare a exipirării parolei;
 Perioada de inactivitate.
Observăm, din cele anterior prezentate, că userul root este invalidat. Deci, dacă am dori să
ne logăm ca un user de root, vom observa că acest lucru este imposibil:
user@ubuntu:~$ sudo login root
Ar fi riscant ca un utilizator să lucreze ca un user de root în mod constant – orice cal troian
sau orice alt tip de agresiune s‐ar propaga foarte ușor în sistem. De aceea, se oferă posibilitatea
de a obține drepturi administrative continue, folosind parola proprie (dar doar dacă sunt în acel
grup), prin intermediul comenzii sudo. În acest caz, comanda va fi:
user@ubuntu:~$ sudo su
[sudo] password for user:
root@ubuntu:/home/user#
Comanda su are semnificația de "substitute user" sau "switch user". Observați că ni se cere parola
utilizatorului current și nu a utilizatorului privilegiat root.
Promptul se schimbă pentru a indica faptul că sunteți un utilizator privilegiat. Caracterul $
indică un utilizator neprivilegiat, caracterul # indică un utilizator privilegiat. Dar, nu vă bazați
întodeauna pe ce indică promptul. Acesta poate fi configurat altfel prin intermediul variabilei PS1.
Pentru a afla în orice moment ca ce utilizator suntem autentificați, indiferent de ceea ce spune
promptul putem folosi comanda:
user@ubuntu:/home/user# whoami
Pentru a vă întoarce în shell‐ul deținut de utilizatorul inițial, folosim:
user@ubuntu:/home/user# exit
Se recomandă să nu folosiți contul privilegiat root decât atât cât este necesar. Dacă folosiți sudo
su, părăsiți acest cont imediat ce ați terminat task‐urile ce aveau nevoie de acest cont.

Atunci când schimbăm utilizatorul, pornim un alt shell ca noul utilizator. Dacă dorim să
încărcăm mediul specific al noului utilizator, putem folosi parametrul ‐ al comenzii su.
user@ubuntu:~$ sudo su –
user@ubuntu:~$ pwd

2|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

Directorul curent este acum home‐ul utilizatorului root, adică /root. Acum mediul curent este
salvat și va fi restaurat după comanda exit. Prin mediu se înțeleg: modul de afișare al promptului,
alias‐uri, directorul home și variabile specifice fiecărui utilizator.

4.2. Conturi de utilizator, parole

Pentru a crea un utilizator cu numele brancoveanu putem folosi comanda adduser:


user@ubuntu:~$ adduser brancoveanu
Imediat veți primi o avertizare care vă atenționează că trebuie să fiți root. Din motive de
securitate, se recomandă să nu folosim contul de root mai mult decât minimul necesar. Pentru
comenzi simple, se recomandă folosirea formei sudo <comanda> cu semnificația: execută
comanda <comanda> ca utilizator privilegiat.
user@ubuntu:~$ sudo adduser brancoveanu
Comanda adduser este una interactivă care va cere stabilirea parolei noului utilizator. Ulterior
ignorați ultimele câmpuri (care cer diferite informații pentru utilizatorul nou creat) apăsând tasta
ENTER.
Pentru a vă loga ca utilizatarul nou creat, puteți folosi comanda login sau su.
user@ubuntu:~$ su ‐ brancoveanu
Acum, pentru a schimba parola unui utilizator comanda passwd trebuie folosită. Această
comandă fără niciun parametru, va schimba parola utilizatorului curent. Comanda passwd având
drept parametru un nume de utilizator, va încerca schimbarea parolei acelui utilizator, solicitând
parola actuală a utilizatorului. Dacă este rulată de către userul root, nu va solicita parola curentă.
Schimbati parola utilizatorului brancoveanu prin:
user@ubuntu:~$ sudo passwd brancoveanu
Logati‐va din nou ca brancoveanu să verificați că totul funcționează. Pentru a bloca contul
brancoveanu dați comanda:

user@ubuntu:~$ sudo passwd ‐l brancoveanu


Logati‐va din nou ca brancoveanu să verificați dacă mai funcționează.
Temă 1: găsiți și utilizați comada care deblochează contul brancoveanu.
Comanda adduser nu este una portabilă, ea nu se găsește în toate distribuțiile, de
exemplu nu se regăsește pe distribuția Gentoo Linux. Această comandă este doar un wrapper
peste useradd, usermod şi alte comenzi similare. După cum veți observa mai jos această
comandă este un script care utilizează toate aceste comenzi, prezentate anterior, pentru a crea
un nou utilizator cât mai complet configurat. În continuare se arată tipurile celor două fișiere:

3|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

user@ubuntu:~$ file $(which adduser)


/usr/sbin/adduser: a /usr/bin/perl script, ASCII text executable
user@ubuntu:~$ file $(which useradd)
/usr/sbin/useradd: ELF 32‐bit LSB shared object, Intel 80386, version 1 (SYSV),
dynamically linked, interpreter / lib, for GNU/Linux 2.6.32, …
Comanda file afișează tipul unui fișier, comanda which afișează locația executabilului ce
reprezintă o comandă, notația $(cmd) înseamnă executarea comenzii cmd și înlocuirea șirului cu
rezultatul acestei comenzi.

Figura 4.1. Rezultatul comenzilor ifconfig și w

4|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

4.3. Date despre utilizatorii autentificați

Utilizând utilitarul putty realizați o conexiune din exterior (de ex. de la sistemul host de tip
windows) către mașina virtuală prin intermediul utilizatorului brancoveanu.
Dintr‐o altă fereastră de tip shell deschideți o conexiuni prin ssh la mașina virtuală (la ea
însăși) prin intermediul comenzii (adresa de IP de mai jos va fi cea a masinii virtuale Ubuntu):
user@ubuntu:~$ ssh brancoveanu@192.168.100.108
Acum prin intermediul următoarelor comenzi, aflați informații despre utilizatorii autentificați în
sistem în prezent, ultimele autentificări, ultima repornire și timpul cât a fost pornită (running)
mașina.
user@ubuntu:~$ w
user@ubuntu:~$ last
user@ubuntu:~$ last reboot
user@ubuntu:~$ uptime
De exemplu, analizând Figura 4.1 observați că sistemul virtual Ubuntu sau RPi are adresa de IP
192.168.100.108. În plus, avem utilizatorul user conectat de la tty7 (tty1…tty6 sunt interfețele
de tip consolă iar tty7 este interfața grafică), un utilizator brancoveanu conectat din interiorul
sistemului intr‐o fereastră de tip console prin intermediul utilitarului login și doi utilizatori
brancoveanu logați prin SSH. Unul dintre ei de la masina cu IP‐ul 192.168.100.104 (sistemul
Windows host), iar cel de al doilea de la masina cu IP‐ul 192.168.100.108 (deci, chiar sistemul
Ubuntu virtualizat).
Puteți folosi comanzile man și apropos pentru a găsi explicații detaliate pentru fiecare
comandă în parte.

4.4. Grupuri

Linux‐ul lucrează cu grupuri. Drepturile asupra oricărui fișier se dau sau revocă: (a) unui
anumit utilizator care este proprietarul (owner‐ul) fișierului, (b) unui anumit grup și (c) restul
lumii (others) – alții decât cele două cazuri prezentate anterior. Deci, în multe ocazii, vom dori să
acordăm anumite drepturi unui grup de utilizatori, diferit the restul utilizatorilor din sistem.
Pentru a adăuga un nou grup în sistem, vom folosi comanda:
user@ubuntu:~$ sudo addgroup <nume_grup>
Există mai multe opțiuni pentru a adăuga în grupul <nume_grup> utilizatorul brancoveanu.
De exemplu putem folosi:
user@ubuntu:~$ sudo adduser brancoveanu <nume_grup>

5|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

sau
user@ubuntu:~$ sudo gpasswd ‐a brancoveanu <nume_grup>
Pentru a șterge un user dintr‐un anumit grup utilizați comanda:
user@ubuntu:~$ sudo gpasswd ‐d brancoveanu <nume_grup>

Temă 2: creati un nuou grup cu numele de grup_test și introduceți utilizatorul brancoveanu


în acest grup prin ambele metode prezentate anterior.

Pentru a schimba grupul de apartenență a unui fișier se folosește comanda chgrp:


user@ubuntu:~$ sudo chgrp <nume_grup> <nume_fisier>

4.5. Comanda sudo

Ca o concluzie globală, nu este sigur și nici recomandat să partajăm parola utilizatorului


root. Din această cauză utilizarea comenzi sudo (superuser do) este o metodă mai sigură şi mai
flexibilă decât su pentru a delega autoritatea.
Pentru ca un utilizator să poată folosi comanda sudo, trebuie să aibă permisiune explicită
în fişierul de configurare /etc/sudoers sau trebuie să fie membră a grupului sudo. De asemenea,
la folosirea comenzii sudo pentru prima oară în sesiunea curentă, se cere o parolă. Aceasta este
parola utilizatorului, nu a root. Astfel, nu partajăm parola root cu nimeni.
De asemenea, sudo poate fi configurat în diferite moduri – de exemplu, să permită doar
anumite comenzi, să nu ceară o parolă, şi să funcţioneze peste reţea.
Temă 3: introduceți utilizatorul brancoveanu în grupul sudo și verificați înainte și după această
operație capabilitatea utilizatorului brancoveanu de a utiliza comanda sudo.
În continuare, vom permite utilizatorul brancoveanu să poată folosi comanda sudo, prin
oferirea acestui drept explicit în fişierul de configurare /etc/sudoers. Vizualizați conținutul
fișierului /etc/sudoers folosind comanda visudo. Evident puteți edita acest fișier în multe
moduri, dar se recomandă folosirea editorului visudo pentru a‐l edita prin:
user@ubuntu:~$ sudo visudo
sau
user@ubuntu:~$ sudo /usr/sbin/visudo
Analizând fișierul identificați grupul utilizatorilor ce pot folosi sudo, iar apoi adăugați utilizatorul
brancoveanu în acest grup. Astfel, prin adăugarea numelui utilizatorului și oferindu-i aceleași
permisiuni ca cele a utilizatorului root, îi va permite acestuia să aibă toate privilegiile sudo.

6|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

# User privilege specification


root ALL=(ALL:ALL) ALL
brancoveanu ALL=(ALL:ALL) ALL
Temă 4: Creați utilizatorul ahmed3. Fiind autentificat ca utilizatorul brancoveanu ștergeți
utilizatorul ahmed3.

4.6. Fișierul bashrc. Aliasuri

Uneori tastarea comenzilor poate deveni o sarcină destul de repetitivă, sau dacă trebuie să
tastați comenzi lungi de mai multe ori este recomandat să aveți un alias pentru acele comenzi.
Dacă folosiți type ls veți observa că ls este un alias pentru ls --color=auto ‐ ceea ce îi
spune să afișeze directoarele și fișierele speciale în diferite culori.
Puteți lista aliasurile existente utilizând comanda alias. De asemenea puteți seta un nou
alias, cu ajutorul comenzii:
user@ubuntu:~$ alias NUME_ALIAS=<comanda>
Deci, pentru crearea unui alias, pentru o comandă, puteți specifica pur și simplu numele
aliasului și apoi atribuirea acestuia respectivei comenzi. Deci, utilizați alias pentru a face ca lal
să fie un alias pentru ls -al. Astfel în loc să tastați ls -la, puteți tasta lal și această secvență
va executa comanda asociată.
user@ubuntu:~$ alias lal=”ls ‐la”
user@ubuntu:~$ lal
Acum verificați dacă acest alias se păstrează în alt terminal/tab sau dacă se păstrează după
închiderea ferestrei actuale. Observați că aceste alias‐uri nu se vor salva după închiderea ferestrei
actuale, așa că va trebui să adaugați acest alias, pentru permanentizare, în fișierul .bashrc. Deci,
configurările realizate din linia de comandă sunt temporare și ele se pierd după un restart al
sistemului sau la pornirea altui terminal. Pentru configurarea sesiunii unui utilizator, exista niște
fisiere specifice de configurare, și anume un fisier global, numit /etc/bash.bashrc, și un fisier
specific fiecarui utilizator, numit $HOME/.bashrc (acestea sunt numele in cazul shell‐ului bash).
Aceste fisiere sunt executate ori de cite ori este lansat un proces shell interactiv.
Pentru a permanentiza acest alias, prezentat mai sus, vizualizați conținutul fișierului de
configurare bash din home‐ul utilizatorului (~/.bashrc) și adăugați definiția aliasului anterior
definit, la sfârșitul fișierului ‐ alias lal="ls -al".

7|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

4.7. Permisiuni

Noțiuni teoretice
Permisiunile controlează accesul utilizatorilor la fișierele și directoarele din sistem. Pornind
de la următoarele 2 imagini, obținute prin intermediul comezii ls –l, avem următoarele noțiuni
teoretice:

1. Permisiunile sunt împărțite în 3 grupe:


 pentru utilizator, cel trecut în coloana reprezentând deținătorul fișierului – user owner;
 pentru grup (cel trecut în coloana pentru grupul fișierului – group owner): toți utilizatorii
acelui grup au aceleași permisiuni;
 pentru ceilalți utilizatori – other.

2. Fiecare grup de permisiuni este format din 3 caractere:


 un caracter r pentru dreptul de a citi sau nu fișierul (“‐”)
 un caracter w pentru dreptul de a modifica fișierul său sau “‐” dacă acest drept nu
există;
 un caracter x pentru posibilitatea de a executa fișierul, sau caracterul “‐” dacă nu se
poate executa fișierul.
Pentru a modifica permsiunile folosim comanda chmod (change mode).

8|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

Utilizare chmod în modul simbolic


În formă literală, permisiunile se pot da sub forma [ugoa]{+-=}perm:

 optional se poate utiliza un caracter din mulțimea {u, g, o, a} cu semnificația:

 u ‐ modifică permisiunile pentru utilizator;


 g ‐ modifică permisiunile pentru grup;
 o ‐ modifică permisiunile pentru ceilalți utilizatori (others);
 a ‐ modifică permisiunile pentru toți utilizatorii (all).
 un caracter din setul {+, ‐, =} cu semnficația:
 + ‐ adaugă permsiunile următoare la cele existente;
 ‐ elimină drepturile următoare din cele existente;
 = ‐ setează permisiunile la valoarea dată în continuare.
 permisiunile, exprimate cu caractere din mulțimea {r, w, x} cu semnificația:
 r ‐ dreptul de a citi fișierul sau directorul;
 w ‐ dreptul de a modifica fișierul sau directorul;
 x ‐ dreptul de a executa fișierul.
Creați un fișier test_lab și vizualizati‐i permisiuni implicite:
user@ubuntu:~$ touch test_lab
user@ubuntu:~$ ls –l test_lab
Observăm că dând comanda:
user@ubuntu:~$ chmod a= test_lab
user@ubuntu:~$ ls ‐l test_lab
s‐au revocat toate permisiunile. În timp ce executând secvența
user@ubuntu:~$ chmod +r test_lab
user@ubuntu:~$ ls ‐l test_lab
s‐a dat drept de read pentru fiecare tip de owner: user, group, others.

În timp ce executând:
user@ubuntu:~$ chmod u+w test_lab
user@ubuntu:~$ ls ‐l test_lab
s‐a dat drept de scriere (write) în fișier pentru owner – de regulă cel care l‐a creat.
În final, executând comenzile:
user@ubuntu:~$ chmod u+x,o+w test_lab
user@ubuntu:~$ ls ‐l test_lab

9|Page
Faculty of Electronics Telecommunication and EAOS
Information Technology

se observă că s‐a dat drept de execuție doar pentru owner și de scriere pentru toată lumea others.

Utilizarea comenzii chmod în modul absolut


Comanda chmod permite specificarea drepturilor într‐o formă numerică, mai comodă.
Documentați‐vă pe internet sau din help‐urile locale asupra modului de utilizare a comenzii
chmod în modul absolut și realizați următoarea temă:
Temă 5: (a) Creați utilizatorii ana, gigi și marcel.
(b) Autentificați‐vă ca utilizatorul ana.
(c) În directorul home, creați fișierele mere și pere conținând, respectiv, textele Ana
are mere și Ana are pere.
(d) Implicit, aceste fișiere sunt accesibile și altor utilizatori. Testați acest lucru,
autentificându‐vă ca gigi și marcel.
(e) Modificați permisiunea fișierului mere astfel încât utilizatorul gigi să nu‐l poată citi
dar să‐l poată scrie, păstrând nemodificate celelalte permisiuni. Folosiți doar
opțiunile numerice pentru chmod.
(f) Modificați permisiunile fișierului pere astfel încât marcel să‐l poată modifica și citi.
Folosiți permisiuni numerice. Nu modificați alte permisiuni.

Schimbarea proprietarului unui fișier Linux


Pentru schimbare prorietarilor unui fișier utilizați comanda chown (change owner). De
exemplu, pentru schimbarea utilizatorului care deține un fișier, utilizați comada:
user@ubuntu:~$ chown <new_user_name_owner> <filename>
Dacă doriți să schimbați și grupul, o puteți cu ajutorul aceleiași comenzi chown sub forma:
user@ubuntu:~$ chown <new_user_name>:<new_user_group> <filename>
Dacă doriți să schimbați numai grupul, utilizați chown în modul următor:
user@ubuntu:~$ chown :<new_user_group> <filename>
De exemplu în continuare vom schimba owner‐ul fișierului pere în gigi:
user@ubuntu:~$ sudo chown gigi ./pere
user@ubuntu:~$ ls ‐l pere
Din motive de securitate, comanda chown necesită privilegii de root. Din acest motiv folosim sudo
pentru a o rula.

10 | P a g e
Faculty of Electronics Telecommunication and EAOS
Information Technology

4.8. Finalizarea execuției unui process

Un proces își poate termina execuția cu succes (status întors 0) sau cu eroare (status diferit
de 0). Într‐un terminal statusul cu care s‐a încheiat ultimul proces lansat se poate vedea cu
ajutorul comenzii:
user@ubuntu:~$ echo $?
În Linux există două programe true și false care întotdeauna se termină cu succes,
respectiv cu eroare:
user@ubuntu:~$ true
user@ubuntu:~$ echo $?
0
user@ubuntu:~$ false
user@ubuntu:~$ echo $?
1
Folosind operatorii && și ||, putem rula un al doilea proces doar dacă primul proces s‐a
încheiat cu succes, respectiv eroare. Operatorii se aseamănă foarte mult cu funțiile logice AND și
OR. De exemplu:
user@ubuntu:~$ true && echo “Succes!”
Succes!
user@ubuntu:~$ false && echo “Succes!”

user@ubuntu:~$ true || echo “Esec!”

user@ubuntu:~$ false || echo “Esec!”


Esec!
De exemplu, o aplicabilitate directă a modalității de secvențiere a comenzilor, este de a
crea un director dar doar dacă acesta nu există. Dacă încercați să listați conținutul unui director
care nu există, veți obține o eroare. Statusul întors de comada ls va fi 2 – care simbolizează
apariția unei erori.
user@ubuntu:~$ ls Romania
ls: cannot access ‘Romania’: No such file or directory
user@ubuntu:~$ echo $?
2
Mai departe se prezintă secvența de comenzi care creează directorul Romania dacă acesta
nu există deja. Ne folosim de faptul că ls va întoarce non‐zero dacă directorul nu există împreună
cu operatorul ||.

11 | P a g e
Faculty of Electronics Telecommunication and EAOS
Information Technology

user@ubuntu:~$ ls Romania || mkdir Romania

12 | P a g e

S-ar putea să vă placă și