Comandă | Descriere scurtă |
---|---|
su | switch user - schimbă utilizatorul în sesiunea curentă |
sudo | rulează o comandă ca root |
whoami | afișează utilizatorul curent |
adduser | adaugă un utilizator |
deluser | șterge un utilizator |
chmod | schimbă permisiunile unui fișier/director |
chown | schimbă utilizatorul proprietar (owner) al unui fișier/director |
chgrp | schimbă grupul unui fișier/director |
passwd | modifică parola |
ssh | conectare la distanță |
scp | copiere la distanță |
Puteți urmări tutorialul video corespunzător laboratorului făcut de IT Assistant.
Pentru a solicita închiderea calculatorului din linia de comandă, putem folosi comanda:
halt
Rulată din contul student
, vi se va 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 poate folosi 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 toată lumea să cunoască această parolă. De aceea, se oferă posibilitatea de a obține drepturi administrative folosind parola proprie, prin intermediul comenzii sudo
.
În acest caz, comanda va fi:
sudo su
student
, NU a utilizatorului privilegiat.
Promptul se schimbă pentru a indica faptul că sunteți un utilizator privilegiat. Caracterul $
indică un utilizator neprivilegiat, caracterul #
indică un utilizator privilegiat.
Pentru a afla în orice moment ca ce utilizator suntem autentificați, indiferent de ceea ce spune promptul putem folosi comanda:
whoami
Pentru a vă întoarce în shell-ul deținut de utilizatorul inițial, folosim:
exit
sudo su
, părăsiți acest cont imediat ce ați terminat taskurile 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 utilizatorului, putem folosi parametrul - al comenzii su
.
sudo su - pwd
Directorul curent este acum home-ul utilizatorului root, adică /root
.
exit
. Prin mediu se înțeleg: modul de afișare al promptului, alias-uri, directorul home și variabile specifice fiecărui utilizator
Pentru a crea un utilizator cu numele numeutilizator
putem folosi comanda adduser
:
adduser numeutilizator
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.
sudo adduser numeutilizator
Comanda adduser
, interactivă va cere stabilirea parolei noului utilizator. Ignorați ultimele câmpuri (informațiile pentru utilizatorul nou creat) apăsând tasta ENTER.
Pentru a vă loga ca utilizatarul nou creat, puteți folosi comanda su
.
su - numeutilizator
Puteți șterge un utilizator folosind comanda deluser
:
sudo deluser numeutilizator
Permisiunile controlează accesul utilizatorilor la fișierele și directoarele din sistem.
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 continuare
Pe un fișier test_perms
, creat cu (și având permisiuni implicite):
touch test_perms ls -l test_perms
observăm că:
chmod a= test_perms ls -l test_perms
- s-au revocat toate permisiunile
chmod +r test_perms ls -l test_perms
- s-a dat drept de read pentru fiecare grup: user, group, others
chmod u+w test_perms ls -l test_perms
- s-a dat drept de write pentru owner
chmod u+x,o+w test_perms ls -l test_perms
- s-a dat drept de execuție pentru owner și de scriere pentru others.
Până acum, am manipulat drepturile unui utilizator la nivel de proprietar (owner) și restul lumii (others). În multe ocazii, vom dori să acordăm aceleași drepturi unui grup de utilizatori, diferit the restul utilizatorilor din sistem.
Pentru a adăuga un grup în sistem, vom folosi comanda:
sudo addgroup numegrup
Pentru a adăuga în grupul numegrup utilizatorul student, vom folosi:
sudo adduser student numegrup
Pentru a schimba grupul unui fișier, folosim chgrp
:
sudo chgrp numegrup fisier
Comanda passwd
este folosită pentru a schimba parola. Fără niciun parametru, va schimba parola utilizatorului curent. Cu parametru un nume de utilizator, va încerca schimbarea parolei acelui utilizator, solicitând parola actuală.
Rulată de către root, nu va solicita parola curentă.
sudo passwd numeutilizator
- va schimba parola lui numeutilizator, fără a solicita parola curenta.
Creați utilizatorii: obama, cameron și putin, folosind ca parole chiar numele de utilizator, adică obama, cameron și putin.
sudo su adduser obama adduser cameron adduser putin
Autentificați-vă ca utilizatorul obama și creați în home-ul acestuia un fișier launchcodes
având conținutul “123456789”.
su - obama echo "124365879" > launchcodes
Implicit, acest fișier este accesibil și altor utilizatori.
Testați acest lucru, autentificându-vă ca putin și cameron.
su cameron cat /home/obama/launchcodes exit su putin cat /home/obama/launchcodes exit
Afișați permisiunile curente ale fișierului.
ls -l /home/obama/launchcodes
va afișa:
-rw-rw-r– 1 obama obama 0 Oct 21 17:47 launchcodes
Revocați dreptul de citire pentru alți utilizatori, în afară de obama.
chmod go-r launchcodes
Creați un grup nato și adăugați utilizatorii cameron și obama în el.
sudo su addgroup nato adduser cameron nato adduser obama nato
Ca utilizatorul obama, creați un fișier secrettreaty
în home-ul acestuia.
Stabiliți grupul fișierului nou creat la nato.
su - obama touch secrettraty exit sudo chgrp nato /home/obama/secrettreaty
Modificați permisiunile astfel încât alți utilizatori (putin de exemplu, dar și alții) să nu poată citi fișierul, iar cei din grupul nato să îl poată citi și modifica.
su - obama chmod o=,g=rw secrettreaty exit
Afișați proprietarul, grupul și permisiunile fișierului secrettreaty
.
ls -l /home/obama/secrettreaty
Logați-vă ca fiecare dintre utilizatorii obama și cameron utilizând su -
. Folosiți pwd
pentru a vedea în ce director este plasat utilizatorul în mod implicit: directorul home.
su - obama pwd exit su - cameron pwd exit
Fiind logați ca obama
logați-vă ca cameron
utilizând su
. Navigați spre directorul home al utilizatorului curent, utilizând cd ~
.
su obama su cameron pwd cd ~ pwd exit exit
Logați ca cameron
navigați către home-ul lui obama
utilizând cd ~obama
.
su cameron cd ~obama pwd exit
Determinați directorul home pentru utilizatorul privilegiat (root), utilizând una din metodele din cadrul acestei secțiuni.
sudo su - pwd exit
De ce nu este /
directorul căutat?
/
este rădăcina arborelui de fișiere. Directorul ~root
este un director din arbore, și anume /root
.
Dacă folosiți type ls
veți observa că ls
est e un alias pentru
ls --color=auto
(ceea ce îi spune să afișeze directoarele și fișierele speciale colorat).
alias
. De asemenea puteți seta un nou alias, cu alias NUME_ALIAS=“COMANDA”
Utilizați alias
pentru a face ca lal
să fie un alias pentru ls -al
.
alias lal="ls -al" lal
Se păstrează alias-ul și în alt terminal/tab?
Vizualizați fișierul de configurare bash din home-ul utilizatorului student (~/.bashrc
) și adăugați definiția aliasului anterior definit, la sfârșitul fișierului.
.bashrc
și se adaugă în el linia:
alias lal="ls -al"
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
.
sudo adduser ana sudo adduser gigel sudo adduser 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
.
su ana echo "Ana are mere" > ~/mere echo "Ana are pere" > ~/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
.
ls -l ~/mere chmod 642 ~/mere ls -l ~/mere
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.
ls -l ~/pere chmod 646 ~/pere ls -l pere
Verificați permisiunile.
chuck
sunt aceleași ca și pentru gigel
. Nu puteți să separați cei doi utilizatori.
Schimbați owner-ul fișierului pere
în gigel
. Ce drepturi va avea acum ana
asupra fișierului pere
?
chown
necesită privilegii de root. Folosiți sudo
pentru a o rula.
sudo chown gigel pere ls -l pere
Ana va avea aceleași drepturi cu chuck
- doar de scriere.
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
folosind comanda visudo
(se recomandă folosirea visudo
pentru a-l edita)
visudo
este nano
, rulați întâi comanda
sudo update-alternatives --config editor
și alegeți vim.basic
pentru a seta vim
ca editor.
sudo
. obama
în acest grup
Stergeți utilizatorul putin
, fiind autentificat ca utilizator obama
.
sudo adduser obama sudo su - obama sudo deluser putin
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):
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
(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 /home/asgaard/thor
, membru al grupurilor admin
, student
, nato
și thor
.
sudo mkdir -p /home/asgaard/thor sudo addgroup nato sudo useradd -d /home/asgaard/thor -G admin,student,nato thor
Deoarece nu a fost configurată parola, logarea ca thor
se va face prin intermediul contului root
.
Deschideți Activities → VMware Player și apoi faceți double-click pe smalltalk. Așteptați până când pornește.
Nu dați comenzi pe mașina virtuală, următoarele comenzi se execută pe mașina locală (intel-workstation).
Deschideți 3 conexiuni prin ssh
la mașina virtuală smalltalk
pusă la dispoziție în laborator, sau pe care o descărcați de la adresa.
bjarne
cu parola c++
. Parola de root este uso
. Hostname-ul este: smalltalk.local
.
ssh bjarne@smalltalk.local
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.
w last last reboot uptime
Vă puteți folosi de comanda apropos
pentru a găsi comenzile necesare rezolvării acestui exercițiu. De asemenea, suportul de curs poate fi de un real ajutor.
scp
este asemănătoare cu cea a cp
, atât că la destinație specificați și username + host.
Exemplu:
scp fisier_local user@host:/calea/pe/host
Consultați manualul comenzii scp
pentru a copia directorul /etc/init.d
în home-ul utilizatorului bjarne de pe mașina virtuală smalltalk
din exercițiul anterior.
scp -r /etc/init.d bjarne@smalltalk.local: