This is an old revision of the document!
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
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.
Pentru a vă întoarce în shellul deținut de utilizatorul inițial, rulați comanda:
exit
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?
-
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
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
Doar obama
ar trebui să vadă conținutul fișierului launchcodes
. Pentru a rezolva problema, vom folosi 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:
Fiecare grup este format din 3 caractere:
Pentru a modifica permsiunile folosim comanda chmod
(change mode).
În formă literală, permisiunile se pot da sub forma [ugoa]{+-=}perm
:
+
- adaugă permsiunile următoare la cele existente-
- elimină drepturile următoare din cele existente=
- setează permisiunile la valoarea dată în continuareTastaț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
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.
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
)
Deschideți 3 conexiuni prin ssh
la mașina virtuală smalltalk
pe care o descărcați de aici TODO.
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.
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?
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.
Pentru configurările permanente trebuie întotdeauna modificat un fișier.
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.
chuck
sunt aceleași ca și pentru gigel
. Nu puteți să separați cei doi utilizatori.
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 /etc/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:
/etc/sudoers
și identificați grupul utilizatorilor ce pot folosi sudo
. ATENȚIE: NU editați fișierul acum! (în mod normal, se recomandă folosirea visudo
pentru a-l edita)obama
în acest grup
Stergeți utilizatorul putin
, fiind autentificat ca utilizator obama
.
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}.
<screen> sudo update-alternatives –config editor </screen>
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}.
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}.