This is an old revision of the document!


[importat] Laborator 04 - Gestiunea utilizatorilor

Suport laborator

  • Puteți urmări tutorialul video corespunzător laboratorului făcut de IT Assistant.

Tutorial

1. Taskuri administrative. root. sudo. su

Rulați comanda următoare și observați ce se întâmplă (comanda închide calculatorul dacă se execută cu succes):

halt

Observați că vi se spune că ar trebui să fiți root pentru a o putea rula.

root este un utilizator privilegiat. Doar el poate rula taskuri administrative. Practic, sistemul îi aparține lui.

Pentru a deveni un alt utilizator se folosește comanda su (switch user). Fără nici un parametru suplimentar, această comandă vă permite accesarea contului de root și vă cere parola acestui utilizator. Ar fi riscant ca toata lumea să cunoască această parolă. De aceea, se oferă posibilitatea de a obține drepturi administrative folosind parola proprie, prin intermediul comenzii sudo.

În cazul nostru, folosim:

sudo su

Observați că ni se cere parola utilizatorului student, NU a utilizatorului privilegiat.

Promptul a fost schimbat pentru a indica faptul că sunteți un utilizator privilegiat. Caracterul $ indică un utilizator neprivilegiat, caracterul # indică un utilizator privilegiat.

Nu vă bazați întodeauna pe ce indică promptul. Poate fi configurat altfel!

Pentru a vă întoarce în shellul deținut de utilizatorul inițial, rulați comanda:

exit

Se recomandă să nu folosiți contul privilegiat decât atât cât este necesar. Dacă folosiți sudo su, părăsiți acest cont imediat ce ați terminat taskurile ce aveau nevoie de acest cont!

Rulați următoarea secvență de comenzi:

pwd
sudo su
pwd
exit
pwd
sudo su -
pwd
exit
pwd

Ce observați cu privire la directorul curent?

Caracterul - face ca mediul specific utilizatorului pe care-l vom impersona să fie încărcat. 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

2. Utilizatori

Creați utilizatorul obama. Folosiți comanda următoare:

adduser obama

Vi se va zice 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.

Rulați

sudo adduser obama

Stabiliți parola obama. Ignorați ultimele câmpuri (informațiile pentru utilizatorul nou creat).

Logați-vă ca utilizatorul obama:

su - obama

Asigurați-vă că sunteți în directorul /home/obama și creați fișierul launchcodes conținând codurile secrete de lansare a rachetelor:

echo "123456789" > launchcodes

Ca student, creați utilizatorii cameron, einstein și putin:

sudo su
adduser einstein
adduser cameron
adduser putin
exit

Stergeți utilizatorul einstein folosind comanda:

sudo deluser einstein

Rulați comenzile următoare:

su cameron
cat /home/obama/launchcodes
exit
su putin
cat /home/obama/launchcodes
exit

Observați că atât cameron cât și putin au putut citi conținutul fișierului.

Doar obama ar trebui să vadă conținutul fișierului launchcodes. Pentru a rezolva problema, vom folosi permisiuni.

3. Permisiuni

Ca obama rulați comanda

ls -l launchcodes

Prima coloană din output reprezintă permisiunile fișierului launchcodes. Pornind de la imaginea din laboratorul precedent, avem următoarea diagramă semnificativă (dreptunghiurile colorate au fost prezentate în laboratorul trecut)

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

  • pentru utilizator (cel trecut în coloana reprezentând deținătorul fișierului)
  • pentru grup (cel trecut în coloana pentru grupul fișierului): toți utilizatorii acelui grup au aceleași permisiuni
  • pentru ceilalți utilizatori

Fiecare grup este format din 3 caractere:

  • un caracter r pentru dreptul de a citi sau - dacă fișierul nu poate fi citit
  • un caracter w pentru dreptul de a modifica fișierul sau - dacă acest drept nu există
  • un caracter x pentru posibilitatea de a executa fișierul, - dacă nu se poate executa fișierul

Pentru a modifica permsiunile folosim comanda chmod (change mode).

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

  • opțional, 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

Tastați

chmod -r launchcodes

Folosind ls -l observați ce permisiuni are fișierul launchodes. Verificați dacă obama poate citi fișierul launchcodes.

cat launchcodes

Observați că absența unui caracter din {u, g, o, a} se interpretează ca modificarea permisiunilor pentru toți utilizatorii (a, sau all).

Rulați comanda următoare:

chmod u+r launchcodes

Verificați cu ls -l ce permisiuni au fost adăugate.

Verificați cine poate citi fișierul launchcodes:

cat launchcodes
exit
su cameron
cat /home/obama/launchcodes
exit
su putin
cat /home/obama/launchcodes
exit

Creați fișierul test_perms. Rulați comenzile următoare și observați cum se modifică permisiunile:

touch test_perms
ls -l test_perms
chmod a= test_perms
ls -l test_perms
chmod +r test_perms
ls -l test_perms
chmod u+w test_perms
ls -l test_perms
chmod u+x,o+w test_perms
ls -l test_perms

Încercați și alte combinații acasă pentru a înțelege cât mai bine permisiunile.

4. Grupuri

Creați un tratat secret între USA și GB. Ca utilizator obama rulați comenzile următoare (în /home/obama):

echo "Tratat secret între USA și GB" > secrettreaty
su cameron
cat secrettreaty
su putin
cat secrettreaty

putin nu ar trebui să citească/scrie fișierul dar cameron și obama da. Nu puteți folosi doar permisiuni (de ce?).

Adăugați grupul nato (ca student) astfel:

sudo addgroup nato

Adăugați utilizatorii cameron și obama la grupul nato astfel:

sudo adduser obama nato
sudo adduser cameron nato

Modificați grupul fișierului secrettreaty utilizând chgrp.

chgrp nato secrettreaty

Modificați permisiunile fișierului astfel încât doar persoanele din grup să-l poată citi sau modifica. Verificați permisiunile cu ls -l.

Verificați că doar utilizatorii cameron și obama pot citi sau modifica tratatul secret.

5. Parole

Utilizatorul obama dorește să-și schimbe parola. Logați ca obama rulați

passwd

și modificați parola la un număr cu o singură cifră. Ce observați?

Rulați din nou comanda și modificați parola cu 0b4m442.

Utilizatorul putin dorește să-i modifice parola lui cameron. Logați ca putin tastați comanda

passwd cameron

Logați ca root, tastați comanda

passwd cameron

(stabiliți noua parolă la c4m3r0n)

Observați că orice utilizator își poate modifica parola proprie dar numai cei privilegiați pot modifica parolele altor utilizatori

6. Date despre utilizatorii autentificați

Deschideți 3 conexiuni prin ssh la mașina virtuală smalltalk pe care o descărcați de aici TODO.

Utilizatorul este bjarne cu parola c++. Parola de root este uso

ssh bjarne@smalltalk.local

Tastați comanda:

w

Ce observați?

Rulați comenzile următoare și pe mașina virtuală și pe cea fizică:

last
last -n 3
last bjarne -n 3
last reboot -n 5
uptime

Aceste comenzi pot fi folosite pentru a afla informații reduse despre sistem: * timpul de când a fost pornit * utilizatorii logați în sistem * utilizatorii care s-au logat în sistem

Pentru mai multe informații folosim log-uri.

Exerciții

1. Home dirs

Creați utilizatorii chirac și thatcher.

Logați-vă ca fiecare dintre aceștia utilizând su -. Folosiți pwd pentru a vedea în ce director este plasat utilizatorul în mod implicit: directorul home.

Logați ca chirac logați-vă ca thatcher utilizând su. Navigați spre directorul home utilizând cd ~.

Logați ca thatcher navigați către home-ul lui chirac utilizând cd ~chirac.

Determinați directorul home pentru utilizatorul privilegiat, utilizând una din metodele din cadrul acestei secțiuni.

De ce nu este / directorul căutat?

2. bashrc. Aliasuri

Tastați ll. Observați că se execută comanda ls -l. Dacă folosiți which ll nu se va afișa nimic. Încercați type ll.

ll nu este o comandă propriu-zisă, ci un alias. Puteți lista aliasurile existente utilizând comanda alias.

Utilizați alias pentru a face ca lal să fie un alias pentru ls -al.

Se păstrează alias-ul și în alt terminal/tab?

Vizualizați fișierul de configurare bash din ~ (.bashrc) și adăugați definiția aliasului anterior definit.

Verificați că alias-ul se păstrează acum și în alt terminal.

Configurările realizate din linia de comandă sunt temporare (se pierd după un restart al sistemului sau la pornirea altui terminal, în funcție de tipul configurării).

Pentru configurările permanente trebuie întotdeauna modificat un fișier.

3. chmod numeric

chmod permite specificarea drepturilor într-o formă numerică, mai comodă. Permisiunile unui fișier se exprimă ca un număr în baza 8 de 3 cifre. Pentru a face corespondența între numere și permisiuni, se realizează trecerea în baza 2 a fiecărei cifre în parte. Un bit 0 semnifica absența permisiunii respective, așa cum arată și figura:

Creați utilizatorii ana, gigel, chuck.

Autentificați-vă ca utilizatorul ana.

În home, creați fișierele mere și pere conținând, respectiv, textele Ana are mere și Ana are pere.

Modificați permisiunea fișierului mere astfel încât gigel să nu-l poată citi dar să-l poată scrie, păstrând nemodificate celelalte permisiuni. Folosiți doar opțiunile numerice pentru chmod.

Modificați permisiunile fișierului pere astfel încât chuck să-l poată modifica și citi. Folosiți permisiuni numerice. Nu modificați alte permisiuni.

Verificați permisiunile.

Permisiunile setate pentru chuck sunt aceleași ca și pentru gigel. Nu puteți să separați cei doi utilizatori.

4. umask

Paranoic din fire, putin} vrea ca toate fișierele pe care le creează el să nu poată fi citite sau modificate de alți utilizatori. Pentru aceasta, folosește umask}.

umask} spune ce drepturi NU vor avea fișierele create cu el. Pentru a stabili drepturile unui fișier se face și logic între valoarea negată a umask} și 666 pentru fișiere sau 777 pentru director. Un fișier NU va fi creat cu drepturi de execuție.

Logați ca putin}, modificați umask astfel încât fișierele create să aibă drepturile cerute (umask} nu e retroactiv, ce ați creat anterior setării umask își păstrează drepturile).

Când aveți valorea corectă pentru umask}, rulați exit} și logați-vă din nou ca putin}. Ce valoare are umask}?

Modificați un fișier astfel încât umask} să rămână permanent la aceeași valoare. Ce fișier trebuie modificat?

Rețineți ideea: permanent == salvat într-un fișier

5. Bitul execute pentru directoare

Logați ca utilizatorul cameron} vizualizați permisiunile directorului cameron} și putin}.

Logați ca putin} listați conținutul directorului cameron}.

cameron} dorește ca home-ul lui să fie privat. Eliminați toate drepturile de acces pentru grup și others pentru directorul cameron}.

Verificați că putin} nu poate accesa sau vizualiza conținutul directorului cameron}.

cameron} dorește să găzduiască o pagină publică personală. Pentru aceasta creează directorul public_html} (creați-l) în home-ul propriu. Serverul web trebuie să acceseze acest director și conținutul acestuia dar cameron} vrea să-și păstreze laboratoare} privat.

Creați fișierele index.html} în public_html} și secret} în home-ul lui cameron}.

Setați bitul x pentru others pentru directorul cameron} și verificați că obama} poate accesa directorul public_html} și fișierul index.html} dar nu poate afișa conținutul directorului cameron}.

De ce nu funcționează tab completion?

6. Sudo

Nu este sigur să partajăm parola utilizatorului root. 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 sudo}, trebuie să aibă permisiune explicită în fişierul de configurare sudoers}. De asemenea, la folosirea sudo 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 să permită doar anumite comenzi, să nu ceară o parolă, şi să funcţioneze peste reţea.

Configurați sudo} astfel încât obama} să-l poată folosi. Urmăriți pașii:

* vizualizați conținutul fișierului sudoers} și identificați grupul utilizatorilor ce pot folosi sudo}. NU editați fișierul! (se recomandă folosirea visudo} pentru a-l edita) * adăugați utilizatorul obama} în acest grup

Stergeți utilizatorul putin} fiind logat ca utilizator obama}.

7. sticky bit

Listați permisiunile directorului laboratoare}. Faceți același lucru și pentru directorul tmp}.

Ce observați?

Autentificați ca root}, creați directorul haskell} în student} și creați fișierele lazy} și functional} în acest director.

Dați toate drepturile pentru directorul haskell}

Autentificați ca student}, stergeți fișierul lazy}. Observați că se poate.

Adăugați bit-ul sticky, autentificați ca root}, pentru directorul haskell}. Folosiți chmod_t}.

Stergeți fișierul functional} autentificați ca obama .

Observați apariția bitului t}.

Rocket Science

1. sudo. visudo

Deoarece editorul folosit implicit de visudo} este nano}, rulați întâi comanda

<screen> sudo update-alternatives –config editor </screen>

și alegeți vim.basic} pentru a seta vim} ca editor.

De ce ați adăugat la taskul precedent utilizatorul obama} în grupul admin?

Dorim ca toți membrii grupului admin} să poată folosi sudo} fără parolă.

Folosiți visudo} pentru a modifica corespunzător.

Verificați că obama} poate rula sudo_ls} fără a i se cere parola pentru sudo}.

2. useradd

Comanda adduser} nu este portabilă (nu se găsește, de exemplu pe Gentoo), este doar un wrapper peste useradd}, usermod} şi alte comenzi similare. Exemplul de mai jos arată tipurile celor două fișiere (student_uso} semnifică promptul):

<screen> student@uso:~$ file $(which adduser) /usr/sbin/adduser: a /usr/bin/perl script text executable student@uso:~$ file $(which useradd) /usr/sbin/useradd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped </screen>

(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)

Adăugați utilizatorul thor} având ca home directorul thor}, membru al grupurilor admin}, student}, nato} și thor}.

Dacă nu configurați o parolă pentru contul creat, puteți să vă logați în acel cont prin intermediul contului privilegiat.

systems/uso/laboratoare/laborator-04.1348412205.txt.gz · Last modified: 2012/09/23 17:56 by ioan.eftimie
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0