20. Bash basics 21. Conditionale & bucle 22. Functii & scripturi 23. SSH & chei 24. Firewall 25. Loguri & audit 26. Combinatii puternice 27. Diagnoza sistem 28. Alias & customizare 29. Cheatsheet rapid
πŸ”

Niciun rezultat gasit. Incearca alt termen.

v2.0 Β· Romana Β· 2025

Invata Linux & Bash
de la zero

Enciclopedia completa pentru incepatori si viitori sysadmin. De la prima comanda pana la scripting avansat, securitate si diagnoza.

150+comenzi
29sectiuni
50+exemple reale
20+combinatii pipe
🐧

0. Ce este Linux si cum functioneaza

Teorie esentiala

Kernel, Shell, Terminal

Linux = kernel (nucleul) + sistem de operare GNU. Bash (Bourne Again Shell) este interpretorul de comenzi implicit pe majoritatea distributiilor. Terminalul este fereastra prin care comunici cu shell-ul.

ℹ️

Distributii populare: Ubuntu/Debian (recomandat incepatori), CentOS/RHEL (servere enterprise), Arch (avansati), Kali (securitate). Comenzile din acest ghid functioneaza pe toate.

Tipuri de conturi

rootSuperuser, acces total. Prompt: #
user normalPermisiuni limitate. Prompt: $
sudoRuleaza comanda ca root temporar

Reguli de baza Linux

Case-sensitiveFisier.txt β‰  fisier.txt
Fara spatii in numeFoloseste _ sau - (ex: my_file.txt)
Fisiere ascunseIncep cu punct: .bashrc .ssh/
Totul e fisierDispozitive, retele, procese = fisiere in /dev /proc
Fara extensie obligatoriescript la fel de valid ca script.sh
πŸ–₯️

1. Prima conectare SSH & navigare initiala

Primul pas

Conectare la server

$ ssh user@192.168.1.100          # conectare cu user si IP
$ ssh -p 2222 user@server.ro      # port personalizat
$ ssh -i ~/.ssh/cheie.pem user@IP # cu cheie privata
$ exit                               # deconectare

Comenzi imediate dupa login

whoamiAfiseaza utilizatorul curent
hostnameNumele serverului/calculatorului
uname -aInfo kernel complet
uptimeCat timp ruleaza sistemul
dateData si ora curenta
calCalendar lunar in terminal
idUID, GID si grupuri utilizator
wCine e conectat si ce face
lastIstoric login-uri
echo $SHELLShell-ul activ (bash/zsh/sh)
⚠️

Nu lucra niciodata direct ca root pe un server de productie. Foloseste un user normal + sudo doar cand e nevoie.

πŸ“

2. Structura Filesystem Linux

Hartă sistem
/Radacina (root) β€” inceputul tuturor cailor
/binComenzi esentiale sistem (ls, cp, mv)
/sbinComenzi admin sistem (fdisk, ifconfig)
/etcFisiere de configurare sistem
/homeDirectoarele utilizatorilor (/home/andrei)
/rootHome-ul userului root
/varDate variabile: loguri, baze de date, mail
/tmpFisiere temporare, sterse la restart
/usrPrograme si librarii utilizator
/optSoftware instalat optional
/devDispozitive hardware (disk, usb, terminal)
/procInfo procese si kernel in timp real
/sysInterface kernel pentru hardware
/mnt /mediaPuncte de montare dispozitive externe
/bootKernel si fisiere de boot (GRUB)
πŸ’‘

Shortcut-uri importante: ~ = directorul tau home, . = directorul curent, .. = directorul parinte, - = directorul anterior.

πŸ—‚οΈ

3. Navigare & gestionare fisiere

Comenzi zilnice

Navigare directoare

pwdAfiseaza calea curenta (Print Working Directory)
cd /etcMergi la /etc
cd ~Mergi la home
cd ..Mergi un nivel sus
cd -Inapoi la directorul anterior
cd ../../varCale relativa combinata

Listare fisiere

lsLista fisiere in directorul curent
ls -lLista detaliata (permisiuni, owner, size)
ls -laInclude fisierele ascunse (. prefix)
ls -lhSize in format human-readable (KB, MB, GB)
ls -ltSortat dupa data modificarii
ls -lSSortat dupa marime
ls -RRecursiv (toate subdirectoarele)
ls /etc/*.confGlob: toate fisierele .conf din /etc
treeStructura arborescenta (instalare: apt install tree)
tree -L 2Maxim 2 nivele adancime

Operatii pe fisiere & directoare

mkdir nou_dirCreeaza director
mkdir -p a/b/cCreeaza structura completa (parinti inclusi)
touch fisier.txtCreeaza fisier gol sau actualizeaza timestamp
cp sursa.txt dest.txtCopiaza fisier
cp -r dir1 dir2Copiaza director recursiv
cp -rp dir1 dir2Copiaza cu permisiuni originale
mv vechi.txt nou.txtRedenumeste sau muta fisier
mv fisier /alt/dir/Muta fisier in alt director
rm fisier.txtSterge fisier pericol
rm -r director/Sterge director recursiv pericol
rm -rf /caleFortat, fara confirmare ATENTIE MAXIMA
rmdir dir_golSterge director gol (mai sigur)
ln -s sursa linkCreeaza symlink (shortcut)
ln sursa link_hardCreeaza hard link
file fisierDetecteaza tipul fisierului
stat fisierInfo detaliat: size, inode, timestamps
du -sh director/Marimea unui director
du -sh *Marimea fiecarui element din curent
🚨

Regula de aur: Niciodata rm -rf / sau rm -rf /* β€” sterge tot sistemul. Verifica de doua ori inainte de orice rm -rf. Foloseste trash-cli ca alternativa sigura.

πŸ”

4. Permisiuni fisiere

Securitate de baza

Citeste permisiunile

-rwxr-xr--  1  andrei  dev  4096  Jan 10  fisier.sh
 ↑↑↑↑↑↑↑↑↑
 β”‚β””β”€β”€β”¬β”€β”€β”˜β””β”€β”€β”¬β”€β”€β”˜β””β”€β”€β”¬β”€β”€β”˜
 β”‚   β”‚      β”‚      └── Others: r-- (citire)
 β”‚   β”‚      └───────── Group: r-x (citire+exec)
 β”‚   └──────────────── Owner: rwx (toate)
 └──────────────────── Tip: - fisier, d director, l link
r = 4Citire (read)
w = 2Scriere (write)
x = 1Executie (execute)
- = 0Permisiune absenta

chmod β€” schimba permisiuni

chmod 755 script.shrwxr-xr-x (standard executabile)
chmod 644 fisier.txtrw-r--r-- (standard fisiere)
chmod 700 director/rwx------ (doar owner)
chmod 600 cheie.pemrw------- (SSH keys)
chmod +x script.shAdauga executie pentru toti
chmod -w fisierElimina scriere
chmod u+x,g-w fisierOwner +exec, group -write
chmod -R 755 dir/Recursiv pe tot directorul

chown & chgrp

chown andrei fisier.txtSchimba owner
chown andrei:dev fisierSchimba owner si grup
chown -R andrei:web /var/www/Recursiv pentru tot
chgrp dev fisier.txtSchimba doar grupul

Permisiuni speciale

chmod 4755 programSetUID β€” ruleaza ca owner (ex: sudo)
chmod 2755 directorSetGID β€” fisiere noi mostenesc grupul
chmod 1777 /tmpSticky bit β€” doar owner poate sterge
umask 022Masca default permisiuni fisiere noi
πŸ‘₯

5. Utilizatori & grupuri

Gestionare conturi
useradd andreiCreeaza user nou (fara home by default pe unele distro)
useradd -m -s /bin/bash andreiCu home dir si bash shell
adduser andreiInteractiv, mai prietenos (Debian/Ubuntu)
passwd andreiSeteaza/schimba parola
usermod -aG sudo andreiAdauga user in grupul sudo
usermod -aG docker andreiAdauga in grupul docker
usermod -s /bin/bash andreiSchimba shell-ul
userdel andreiSterge user (pastreaza home)
userdel -r andreiSterge user SI home-ul
groupadd devopsCreeaza grup nou
groupdel devopsSterge grup
groups andreiLista grupuri user
cat /etc/passwdLista toti utilizatorii sistem
cat /etc/groupLista toate grupurile
sudo suDevin root temporar
su - andreiComuta la userul andrei
sudo -lCe comenzi pot rula cu sudo
ℹ️

Fisierul /etc/sudoers controleaza accesul sudo. Editeaza-l NUMAI cu visudo, altfel risc de sistem blocat.

πŸ”

6. Cautare fisiere & continut

find, grep, locate

find β€” cautare avansata

find / -name "config.php"Cauta dupa nume, tot sistemul
find . -name "*.log"Toate log-urile din directorul curent
find /var -type fDoar fisiere (nu directoare)
find /var -type dDoar directoare
find . -size +100MFisiere mai mari de 100MB
find . -size -1kFisiere mai mici de 1KB
find . -mtime -7Modificate in ultimele 7 zile
find . -mtime +30Nemodificate de peste 30 zile
find . -perm 777Fisiere cu permisiuni 777
find . -user andreiFisiere detinute de andrei
find /tmp -exec rm {} \;Sterge rezultatele gasit
find . -name "*.tmp" -deleteSterge direct, mai rapid
find . -emptyFisiere si directoare goale
find . -maxdepth 2 -name "*.sh"Cauta maxim 2 nivele adancime

grep β€” cauta in continut

grep "eroare" fisier.logCauta text in fisier
grep -i "Error" fisier.logCase-insensitive
grep -r "password" /etc/Recursiv in director
grep -n "text" fisierAfiseaza numarul liniei
grep -v "DEBUG" app.logInvers: linii care NU contin
grep -c "error" fisier.logNumara liniile cu match
grep -l "text" *.confListeaza fisierele care contin
grep -A 3 "error"+3 linii dupa match (after)
grep -B 3 "error"+3 linii inainte de match (before)
grep -E "err|warn|crit"Regex extins, multiple pattern
grep -w "root"Cuvant exact (nu rootkit)
grep -P "\d{4}"Perl regex (numere 4 cifre)

locate & which & whereis

locate fisier.confCautare rapida din baza de date (updatedb)
updatedbActualizeaza baza locate
which python3Calea executabilului
whereis nginxExecutabil + sursa + man pages
type lsAlias, builtin sau executabil?
πŸ“„

7. Vizualizare continut text

cat, less, head, tail
cat fisier.txtAfiseaza tot fisierul
cat -n fisier.txtCu numere de linie
cat file1 file2 > combinedConcateneaza fisiere
less fisier.logVizualizare paginata (q=iesire, /=cauta)
more fisier.txtPaginat simplu (space=urmator)
head fisier.txtPrimele 10 linii
head -n 25 fisier.txtPrimele 25 linii
head -c 500 fisierPrimii 500 bytes
tail fisier.txtUltimele 10 linii
tail -n 50 fisier.logUltimele 50 linii
tail -f /var/log/syslogLive monitoring log (Ctrl+C stop)
tail -F fisier.logCa -f dar urmareste si rotirea fisierului
wc fisier.txtLinii, cuvinte, bytes
wc -l fisier.txtDoar numarul de linii
wc -w fisier.txtDoar numarul de cuvinte
od -c fisierDump octal/hex (fisiere binare)
xxd fisierHex dump cu ASCII
πŸ’‘

In less: G = salt la sfarsit, g = salt la inceput, /cuvant = cauta, n = urmatorul rezultat, q = iesire.

✏️

8. Editare text: nano & vim

Editoare terminal

nano β€” editorul prietenos

nano fisier.txtDeschide fisier in nano
Ctrl+OSalveaza (write Out)
Ctrl+XInchide
Ctrl+WCauta text
Ctrl+KTaie linia
Ctrl+ULipeste linia
Alt+UUndo
Ctrl+GHelp

vim β€” editorul puternic

vim fisier.txtDeschide fisier
iIntra in modul INSERT (editare)
EscInapoi in modul NORMAL
:wSalveaza
:qIesi
:wq sau ZZSalveaza si iesi
:q!Iesi fara sa salvezi
/cuvantCauta (n=urmator, N=anterior)
:%s/vechi/nou/gInlocuieste in tot fisierul
ddSterge linia curenta
yyCopiaza linia (yank)
pLipeste (paste)
uUndo
Ctrl+RRedo
ggPrima linie
GUltima linie
:set numberAfiseaza numere linii
βš™οΈ

9. Procesare text

awk, sed, sort, cut

sed β€” stream editor

sed 's/vechi/nou/' fisierInlocuieste prima aparitie/linie
sed 's/vechi/nou/g' fisierInlocuieste toate aparitiile
sed -i 's/foo/bar/g' fisierInlocuieste in fisier direct
sed '5d' fisierSterge linia 5
sed '/^#/d' fisierSterge liniile ce incep cu #
sed -n '10,20p' fisierAfiseaza liniile 10-20
sed 's/^/ /' fisierAdauga spatii la inceput fiecare linie

awk β€” procesare structurata

awk '{print $1}' fisierAfiseaza primul camp (coloana 1)
awk '{print $1,$3}' fisierCamp 1 si camp 3
awk -F: '{print $1}' /etc/passwdSeparator : (lista useri)
awk 'NR==5' fisierLinia 5
awk 'NR>=5 && NR<=10' fisierLiniile 5 la 10
awk '{sum+=$1} END{print sum}'Suma coloanei 1
awk '/error/{print NR": "$0}'Linii cu "error" + nr linie

sort, cut, uniq, tr

sort fisier.txtSorteaza alfabetic
sort -r fisier.txtSorteaza invers
sort -n numere.txtSorteaza numeric
sort -u fisier.txtSortat + elimina duplicate
sort -k2 fisier.txtSorteaza dupa coloana 2
uniq fisier.txtElimina linii consecutive duplicate
uniq -c fisier.txtNumara aparitiile
cut -d: -f1 /etc/passwdTaie campul 1 cu separator :
cut -c1-10 fisierPrimele 10 caractere/linie
tr 'a-z' 'A-Z'Transforma lowercase in uppercase
tr -d '\r'Sterge carriage return (Windows→Linux)
tr -s ' 'Comprima spatii multiple in unul
paste file1 file2Uneste linii din doua fisiere
join file1 file2Join pe camp comun (ca SQL JOIN)
diff file1 file2Diferente intre doua fisiere
comm file1 file2Linii comune/unice intre fisiere sortate
πŸ”—

10. Redirectare & Pipe

Puterea shell-ului

Redirectare I/O

cmd > fisierRedirecteaza output in fisier (suprascrie)
cmd >> fisierAdauga output la fisier (append)
cmd < fisierCiteste input din fisier
cmd 2> erori.txtRedirecteaza erorile (stderr)
cmd > out.txt 2>&1Output + erori in acelasi fisier
cmd >/dev/nullIgnora output complet
cmd 2>/dev/nullIgnora erorile
cmd &> tot.txtShorthand: stdout + stderr
cat << EOF ... EOFHere document (input multi-linie)
cmd <<< "text"Here string (input text direct)

Pipe β€” inlantuire comenzi

ℹ️

Pipe | trimite output-ul unei comenzi ca input pentru urmatoarea. Este una dintre cele mai puternice caracteristici ale bash.

πŸ“Œ Exemplu combinatie
cat /etc/passwd | grep -v "#" | cut -d: -f1 | sort

Lista userilor fara comentarii, sortat alfabetic

πŸ“Œ Top 10 fisiere mari
du -sh /* 2>/dev/null | sort -rh | head -10

Gaseste cele mai mari directoare din radacina

πŸ“Œ Procese care consuma cel mai mult CPU
ps aux | sort -nrk 3 | head -10

Sortat dupa coloana 3 (CPU%)

πŸ“Œ Numara erorile unice din log
grep -i "error" app.log | awk '{print $NF}' | sort | uniq -c | sort -rn

Frecventa fiecarui tip de eroare

πŸ“Œ IP-uri care acceseaza cel mai mult
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

Top 20 IP-uri din log-ul Nginx

πŸ“Œ tee β€” scrie si afiseaza simultan
apt upgrade 2>&1 | tee /var/log/upgrade.log

Afiseaza si salveaza output in acelasi timp

πŸ“Œ xargs β€” transmite argumente
find . -name "*.bak" | xargs rm -f

Gaseste si sterge toate fisierele .bak

⚑

11. Gestionare procese

ps, kill, bg, fg

Vizualizare procese

psProcese sesiune curenta
ps auxToate procesele sistemului
ps aux | grep nginxCauta procesul nginx
ps -ef --forestArbore procese (parinte-copil)
topMonitorizare live (q=iesire)
htopTop interactiv (instalare: apt install htop)
pgrep nginxPID-ul procesului nginx
pidof apache2PID-urile apache2
pstreeArbore vizual procese
lsofFisiere deschise de procese
lsof -i :80Ce proces asculta pe portul 80
lsof -u andreiFisiere deschise de userul andrei

Control procese

kill 1234Trimite SIGTERM (oprire gradata) la PID 1234
kill -9 1234SIGKILL β€” oprire fortata imediata
killall nginxOpreste toate procesele nginx
pkill -f "python"Opreste dupa pattern in comanda
Ctrl+COpreste procesul din prim-plan
Ctrl+ZSuspenda procesul (il pune in background)
bgContinua procesul suspendat in background
fgAduce procesul din background in prim-plan
jobsLista procese background sesiune curenta
nohup cmd &Ruleaza in background, rezista la logout
cmd &Ruleaza direct in background
nice -n 10 cmdPorneste cu prioritate mai mica
renice +5 -p 1234Schimba prioritatea unui proces in rulare
πŸ”§

12. Servicii systemd

systemctl, journalctl

systemctl β€” gestionare servicii

systemctl status nginxStarea serviciului
systemctl start nginxPorneste serviciu
systemctl stop nginxOpreste serviciu
systemctl restart nginxReporneste
systemctl reload nginxReciteste config fara restart
systemctl enable nginxPorneste automat la boot
systemctl disable nginxNu mai porneste la boot
systemctl is-active nginxactive/inactive (pentru scripturi)
systemctl list-units --type=serviceToate serviciile
systemctl list-units --failedServicii cu erori
systemctl daemon-reloadReciteste unit files dupa modificare

journalctl β€” loguri sistemd

journalctl -u nginxLoguri serviciu nginx
journalctl -u nginx -fLoguri live (follow)
journalctl -u nginx --since todayDin ziua curenta
journalctl -n 50Ultimele 50 mesaje sistem
journalctl -p errDoar erorile (err/warn/info/debug)
journalctl --disk-usageCat spatiu ocupa logurile
journalctl --vacuum-size=500MCurata loguri la 500MB
🌐

13. Retea & conectivitate

ip, ss, curl, ping

Info retea

ip addrAdresele IP ale interfetelor (inlocuieste ifconfig)
ip addr show eth0Info interfata eth0
ip routeTabela de rutare
ip linkStarea interfetelor de retea
ip neighTabela ARP (vecini retea)
ss -tulnPorturi deschise (inlocuieste netstat)
ss -tulnpCu procesele asociate
ss -sSumar conexiuni
netstat -tulnAlternativa veche (net-tools)
hostname -IIP-ul local al masinii
curl ifconfig.meIP-ul public

Testare & transfer

ping -c 4 google.comTest conectivitate (4 pachete)
traceroute google.comRuta catre destinatie
mtr google.comTraceroute + ping live (ping avansat)
nslookup domain.comRezolutie DNS
dig domain.comInfo DNS detaliat
dig domain.com MXMail servers
whois domain.comInfo domeniu
curl -I https://site.roHeaders HTTP raspuns
curl -o fisier.zip URLDescarca fisier
curl -L URLUrmareste redirectarile
wget URLDescarca fisier
wget -r -np URLDescarca recursiv site
scp fisier.txt user@server:/destCopie securizata prin SSH
rsync -avz /local/ user@server:/destSincronizare fisiere (avansat)
nc -zv server.com 80Test port deschis (netcat)
nmap -sP 192.168.1.0/24Scan hosts activi in retea locala

Configurare interfata (temporara)

# ip addr add 192.168.1.50/24 dev eth0  # adauga IP
# ip link set eth0 up                    # activeaza interfata
# ip link set eth0 down                  # dezactiveaza
# ip route add default via 192.168.1.1    # gateway default
πŸ’Ύ

14. Disk & storage

df, fdisk, mount, lvm
df -hSpatiu disponibil pe toate partitiile
df -h /homeSpatiu pe partitia /home
df -iUtilizare inode-uri
du -sh /var/logMarimea directorului /var/log
du -sh * | sort -rh | headTop directoare mari
lsblkLista block devices (discuri, partitii)
lsblk -fCu filesystem si UUID
fdisk -lInfo detaliat discuri root
fdisk /dev/sdbPartitionare disc sdb atentie
parted /dev/sdbPartitionare moderna (GPT suport)
mkfs.ext4 /dev/sdb1Formateaza partitia ca ext4
mkfs.xfs /dev/sdb1Formateaza ca XFS
mount /dev/sdb1 /mnt/dataMonteaza partitia
umount /mnt/dataDemonteaza partitia
mount -o remount,rw /Remontare ca read-write
blkidUUID si tip filesystem pentru toate partitiile
cat /etc/fstabMontari automate la boot
fsck /dev/sdb1Verifica si repara filesystem disc nemontata
e2fsck -f /dev/sdb1Verificare fortata ext4
dd if=/dev/sda of=/dev/sdbCloneaza disc intreg atentie
dd if=/dev/zero of=/dev/sdb bs=1MSterge disc complet
hdparm -I /dev/sdaInfo detaliat HDD/SSD
smartctl -a /dev/sdaSanatate disc SMART
⚠️

Verifica INTOTDEAUNA cu lsblk sau fdisk -l inainte de fdisk, mkfs sau dd. O greseala sterge date irecuperabil.

πŸ“Š

15. Monitorizare sistem

top, vmstat, iostat
topMonitor live: CPU, RAM, procese
htopVersiune imbunatatita top (culori, mouse)
atopMonitor avansat cu istoric
free -hMemorie RAM si SWAP utilizata
vmstat 1 5Stats VM la 1 secunda, 5 iteratii
iostat -x 1Stats I/O discuri in timp real
iotopProcese care scriu/citesc cel mai mult
sar -u 1 10CPU la fiecare secunda, 10 ori (sysstat)
mpstatStats pe fiecare core CPU
dstatCombinat: CPU+RAM+disk+retea live
watch -n 2 df -hActualizeaza comanda la 2 secunde
uptimeLoad average 1m/5m/15m
cat /proc/loadavgLoad average direct din kernel
cat /proc/meminfoInfo detaliat memorie
cat /proc/cpuinfoInfo detaliat CPU
lscpuArhitectura CPU, nuclee, thread-uri
lshwHardware complet sistem
dmidecodeInfo hardware din BIOS/DMI
πŸ“¦

16. Gestionare pachete

apt, yum, dnf, snap

APT β€” Debian / Ubuntu

apt updateActualizeaza lista pachete
apt upgradeActualizeaza pachetele instalate
apt full-upgradeUpgrade cu rezolvare dependente
apt install nginxInstaleaza pachet
apt remove nginxDezinstaleaza (pastreaza config)
apt purge nginxDezinstaleaza + sterge configurile
apt autoremoveSterge dependentele nefolosite
apt search nginxCauta pachete
apt show nginxInfo pachet
apt list --installedPachete instalate
dpkg -lLista completa pachete instalate
dpkg -i pachet.debInstaleaza .deb manual
dpkg --get-selectionsExport lista pachete instalate

YUM/DNF β€” CentOS / Fedora / RHEL

dnf updateActualizeaza toate pachetele
dnf install nginxInstaleaza pachet
dnf remove nginxDezinstaleaza
dnf search nginxCauta in repo
dnf list installedPachete instalate
rpm -ivh pachet.rpmInstaleaza .rpm manual

Snap & Flatpak

snap install vlcInstaleaza snap
snap listSnap-uri instalate
snap refreshActualizeaza toate snap-urile
flatpak install flathub vlcInstaleaza Flatpak
πŸ—œοΈ

17. Arhive & compresie

tar, gzip, zip

tar β€” arhivare

tar -czf arhiva.tar.gz director/Creeaza arhiva gzip
tar -cjf arhiva.tar.bz2 director/Creeaza arhiva bzip2 (mai mica)
tar -cJf arhiva.tar.xz director/Creeaza arhiva xz (cea mai mica)
tar -tzf arhiva.tar.gzListeaza continut fara extragere
tar -xzf arhiva.tar.gzExtrage arhiva gzip
tar -xzf arhiva.tar.gz -C /dest/Extrage in director specific
tar -xzf arhiva.tar.gz fisier.txtExtrage un singur fisier
tar -czf backup-$(date +%F).tar.gz /etc/Backup cu data in nume

gzip, bzip2, zip, 7z

gzip fisier.txtComprima (creeaza .gz, sterge original)
gzip -k fisier.txtComprima, pastreaza originalul
gunzip fisier.txt.gzDecomprima
gzip -d fisier.gzAlternativa decomprima
zcat fisier.gzAfiseaza continut fara extragere
bzip2 fisier.txtComprima cu bzip2
bunzip2 fisier.bz2Decomprima bzip2
zip -r arhiva.zip director/Creeaza zip recursiv
unzip arhiva.zipExtrage zip
unzip -l arhiva.zipListeaza continut zip
7z a arhiva.7z director/Creeaza 7z (compresia maxima)
7z x arhiva.7zExtrage 7z
⏰

18. Cron & automatizare

Sarcini programate

crontab β€” editare sarcini

crontab -eEditeaza crontab userului curent
crontab -lListeaza crontab
crontab -rSterge tot crontab atentie
sudo crontab -eCrontab pentru root
cat /etc/crontabCrontab sistem
ls /etc/cron.d/Fisiere cron individuale
ls /etc/cron.daily/Scripturi rulate zilnic
# Sintaxa cron: min  ora  zi  luna  zi_saptamana  comanda
#               *    *    *   *     *              (0-59)(0-23)(1-31)(1-12)(0-7)

0 2 * * *       /home/andrei/backup.sh      # Zilnic la 2:00
*/5 * * * *     /usr/bin/check.sh           # La fiecare 5 minute
0 0 * * 1       /scripts/weekly.sh          # Luni la miezul noptii
0 9-17 * * 1-5  /scripts/workhours.sh       # Luni-Vineri 9-17, la ora fixa
@reboot         /scripts/startup.sh         # La fiecare reboot
@daily          /scripts/daily.sh           # Zilnic (echivalent 0 0 * * *)

at β€” programare o singura data

at 14:30Programeaza comanda pentru 14:30
at now + 30 minutesProgrameaza pentru 30 minute
atqLista task-uri programate
atrm 2Sterge task nr 2
πŸ”€

19. Variabile de mediu & env

Configurare shell
echo $PATHCaile unde se cauta executabile
echo $HOMEDirectorul home al userului curent
echo $USERUtilizatorul curent
echo $SHELLShell-ul activ
echo $TERMTipul terminalului
printenvToate variabilele de mediu
envMediul complet
setVariabile shell + functii
export VARNAME=valoareSeteaza variabila de mediu
export PATH=$PATH:/nou/dirAdauga director la PATH
unset VARNAMESterge variabila
VARNAME=val cmdVariabila temporara doar pentru comanda
source ~/.bashrcReincarca configuratia bash
. ~/.bashrcEchivalent source

Fisiere configurare bash

~/.bashrcConfigurat la fiecare shell interactiv
~/.bash_profileConfigurat la login
~/.bash_aliasesAlias-uri personale
/etc/environmentVariabile globale sistem
/etc/profileConfigurat global la login
/etc/profile.d/*.shConfigurari modulare sistem
πŸ“œ

20. Bash scripting β€” bazele

Automatizare

Structura unui script bash

#!/bin/bash
# Descriere: Primul meu script bash
# Autor: Andrei | Data: 2025-01-10

# Variabile
NUME="ZimbruL"
DATA=$(date +%F)

# Output
echo "Salut, $NUME! Astazi este $DATA"

# Verificare exit code comanda anterioara
ls /inexistent 2>/dev/null
echo "Exit code: $?"    # 0=succes, altceva=eroare

Rulare script

chmod +x script.shFaci executabil
./script.shRulezi din directorul curent
bash script.shRulezi direct cu bash
bash -x script.shDebug β€” afiseaza fiecare comanda
bash -n script.shVerifica sintaxa fara executie
shellcheck script.shLint avansat pentru scripturi

Variabile & substitutii

$1 $2 $3          # argumente pozitionale scriptului
$@                 # toate argumentele
$#                 # numarul de argumente
$0                 # numele scriptului
$$                 # PID-ul scriptului curent
$?                 # exit code ultima comanda
${VAR:-default}    # valoare default daca VAR e goala
${#VAR}            # lungimea variabilei
${VAR^^}           # uppercase
${VAR,,}           # lowercase
$(comanda)         # substitutie comanda (rezultatul ei)
$((2 + 3))         # calcul aritmetic = 5
πŸ”€

21. Conditionale & bucle bash

Logica scripting

if / else

#!/bin/bash
FISIER="/etc/hosts"

if [ -f "$FISIER" ]; then
    echo "Fisierul exista"
elif [ -d "$FISIER" ]; then
    echo "Este un director"
else
    echo "Nu exista"
fi

# Comparatii numerice: -eq -ne -lt -le -gt -ge
if [ $NUM -gt 10 ]; then echo "mare"; fi

# String comparatii: = != -z (gol) -n (negol)
if [[ "$STR" == "test" ]]; then echo "match"; fi

# Conditii fisiere: -f fisier -d dir -r readable -w writable -x exec -e exista -s nenul

Bucle for & while

# for clasic
for i in 1 2 3 4 5; do
    echo "Nr: $i"
done

# for range
for i in {1..10}; do echo $i; done

# for pe fisiere
for f in /etc/*.conf; do
    echo "Config: $f"
done

# while loop
COUNT=0
while [ $COUNT -lt 5 ]; do
    echo "Count: $COUNT"
    COUNT=$(($COUNT + 1))
done

# citire fisier linie cu linie
while IFS= read -r linie; do
    echo ">> $linie"
done < fisier.txt

# until loop (opusul while)
until [ $COUNT -eq 10 ]; do
    COUNT=$(($COUNT+1))
done

case statement

case $1 in
  start)   echo "Pornire..."  ;;
  stop)    echo "Oprire..."   ;;
  restart) echo "Restart..."  ;;
  *)       echo "Uz: $0 {start|stop|restart}" ;;
esac
🧩

22. Functii & scripturi complete

Cod reutilizabil
#!/bin/bash
# Script backup simplu cu functii

# Definire functie
log() {
    echo "[$(date '+%H:%M:%S')] $1"
}

backup_dir() {
    local SOURCE="$1"
    local DEST="$2"
    local FNAME="backup-$(date +%F-%H%M).tar.gz"

    if [ ! -d "$SOURCE" ]; then
        log "EROARE: $SOURCE nu exista!"
        return 1
    fi

    log "Backup $SOURCE -> $DEST/$FNAME"
    tar -czf "$DEST/$FNAME" "$SOURCE" && log "SUCCES!" || log "ESEC!"
}

# Apel functii
log "Incepe backup-ul"
backup_dir "/etc" "/var/backups"
backup_dir "/home" "/var/backups"
log "Gata!"

Tehnici utile in scripturi

set -eOpreste scriptul la prima eroare
set -uEroare la variabila nedefinita
set -xDebug: afiseaza comenzile executate
set -euo pipefailCombo recomandat pentru scripturi robuste
trap 'cleanup' EXITRuleaza functia la iesire (cleanup)
trap 'echo Intrerupt!' INTLa Ctrl+C
read -p "Confirmi? " VARCiteste input utilizator
read -s -p "Parola: " PASSCiteste parola (fara echo)
exit 0Iesire cu succes
exit 1Iesire cu eroare
πŸ”‘

23. SSH & chei criptografice

Securitate conexiune

Generare & gestionare chei SSH

ssh-keygen -t ed25519Genereaza pereche chei (recomandat)
ssh-keygen -t rsa -b 4096Cheie RSA 4096 biti
ssh-copy-id user@serverCopiaza cheia publica pe server
cat ~/.ssh/id_ed25519.pubAfiseaza cheia publica
ssh-add ~/.ssh/cheieAdauga cheie in ssh-agent
ssh-agent bashPorneste ssh-agent
ssh-add -lLista chei incarcate in agent
chmod 700 ~/.sshPermisiuni corecte director ssh
chmod 600 ~/.ssh/authorized_keysPermisiuni corecte chei autorizate

Configurare SSH (~/.ssh/config)

# ~/.ssh/config β€” configurare conexiuni SSH

Host server-prod
    HostName     192.168.1.100
    User         andrei
    Port         2222
    IdentityFile ~/.ssh/id_ed25519

# Acum poti conecta simplu cu: ssh server-prod

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3
    AddKeysToAgent      yes

Securizare server SSH (/etc/ssh/sshd_config)

Port 2222                    # schimba portul default
PermitRootLogin no           # NU permite root prin ssh
PasswordAuthentication no   # NUMAI chei SSH
PubkeyAuthentication yes    # activeaza chei
MaxAuthTries 3               # max 3 incercari
AllowUsers andrei            # doar utilizatorul andrei
πŸ›‘οΈ

24. Firewall β€” ufw & iptables

Protectie retea

UFW β€” Uncomplicated Firewall (Ubuntu)

ufw statusStarea firewall-ului
ufw enableActiveaza firewall
ufw disableDezactiveaza
ufw allow 22Permite SSH
ufw allow 80/tcpPermite HTTP
ufw allow 443Permite HTTPS
ufw allow from 192.168.1.0/24Permite retea locala
ufw deny 25Blocheaza SMTP
ufw delete allow 80Sterge regula
ufw limit 22/tcpRate limiting SSH (anti brute-force)
ufw status numberedReguli cu numere
ufw resetReseteaza toate regulile

iptables β€” firewall avansat

iptables -L -n -vLista reguli curente
iptables -A INPUT -p tcp --dport 80 -j ACCEPTPermite port 80
iptables -A INPUT -s 10.0.0.5 -j DROPBlocheaza IP
iptables -D INPUT 3Sterge regula nr 3
iptables-save > /etc/iptables/rules.v4Salveaza regulile
iptables-restore < /etc/iptables/rules.v4Restaureaza regulile
⚠️

Inainte sa activezi firewall-ul pe un server remote, asigura-te ca ai o regula pentru SSH (port 22 sau custom). Altfel te blochezi singur!

πŸ“‹

25. Loguri & audit

Investigare sistem

Fisiere log importante

/var/log/syslogMesaje generale sistem (Debian/Ubuntu)
/var/log/messagesMesaje sistem (RHEL/CentOS)
/var/log/auth.logAutentificari, sudo, SSH
/var/log/kern.logMesaje kernel
/var/log/dmesgRing buffer kernel (boot, hardware)
/var/log/nginx/access.logAccese web Nginx
/var/log/nginx/error.logErori Nginx
/var/log/apache2/access.logAccese Apache
/var/log/cronExecutii cron
/var/log/faillogLogin-uri esuate
/var/log/btmpToate login-urile esuate (binary)
/var/log/wtmpToate login/logout-urile (binary)

Comenzi investigare

dmesg | tail -20Ultimele mesaje kernel
dmesg | grep -i errorErori hardware
lastIstoric login-uri
lastbLogin-uri esuate
lastlogUltimul login pentru fiecare user
whoUtilizatori conectati acum
wUtilizatori + ce fac
ausearch -m loginAudit login events (auditd)
grep "Failed password" /var/log/auth.logTentative SSH brute-force
grep "Accepted" /var/log/auth.logLogin-uri SSH reusite
⚑

26. Combinatii puternice (one-liners)

Power user
πŸ”₯ Monitorizeaza un log in timp real cu filtrare
tail -f /var/log/nginx/access.log | grep --line-buffered "404"

Afiseaza live doar erorile 404

πŸ”₯ Backup rapid cu progres
tar -czf - /home/andrei | pv | ssh user@server "cat > /backup/home.tar.gz"

Backup direct catre server remote cu bara de progres (pv)

πŸ”₯ Gaseste si inlocuieste in mai multe fisiere
grep -rl "localhost" /etc/nginx/conf.d/ | xargs sed -i 's/localhost/server.ro/g'

Inlocuieste "localhost" cu "server.ro" in toate config-urile nginx

πŸ”₯ Monitorizeaza utilizarea discului live
watch -n 5 'df -h && echo "---" && du -sh /var/log/*'

Actualizeaza la 5 secunde: spatiu total + fiecare fisier log

πŸ”₯ Kill toate procesele unui user
ps -u andrei -o pid= | xargs kill -9

Opreste fortat toate procesele userului andrei

πŸ”₯ Compara doua directoare
diff <(ls -la /dir1/) <(ls -la /dir2/)

Process substitution β€” compara output-ul a doua comenzi

πŸ”₯ Descarca si ruleaza imediat script
curl -fsSL https://get.docker.com | bash

Pattern comun pentru instalare software (verifica intotdeauna scriptul inainte!)

πŸ”₯ Genereaza parola aleatorie
openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 20

Parola de 20 caractere alfanumerice

πŸ”₯ Sterge fisiere mai vechi de 30 zile
find /var/log -name "*.log" -mtime +30 -exec rm -f {} \;

Curatenie automata log-uri vechi

πŸ”₯ Export / import baza de date MySQL
mysqldump -u root -p dbname | gzip > backup.sql.gz
zcat backup.sql.gz | mysql -u root -p dbname

Dump comprimat direct

πŸ”₯ Tunnel SSH (port forwarding)
ssh -L 8080:localhost:80 user@server.ro

Acceseaza portul 80 al serverului prin localhost:8080 pe masina ta

πŸ”₯ Sincronizare fisiere cu rsync + delete
rsync -avz --delete /sursa/ user@server:/dest/

Mirror complet: copiaza + sterge ce nu mai exista in sursa

πŸ”₯ Cauta text in arhive tar fara extragere
tar -tzf arhiva.tar.gz | grep ".conf"

Listeaza fisierele .conf din arhiva

πŸ”₯ Rulare paralela comenzi
parallel -j4 'echo Procesez {}' ::: fisier1 fisier2 fisier3 fisier4

Ruleaza 4 comenzi simultan (necesita GNU parallel)

πŸ”₯ Verifica certificate SSL
echo | openssl s_client -connect domain.com:443 2>/dev/null | openssl x509 -noout -dates

Afiseaza data expirare certificat SSL

🩺

27. Diagnoza sistem

Troubleshooting

Sistem nu raspunde / lent

# 1. Verificare load
uptime
top # sorteaza cu 'P' dupa CPU, 'M' dupa memorie

# 2. Memorie
free -h
cat /proc/meminfo | grep "MemAvailable"

# 3. I/O disk
iostat -x 1 5
iotop -ao

# 4. Retea
ss -tulnp
netstat -s | grep "errors"

# 5. Loguri recente
journalctl -p err --since "1 hour ago"
dmesg | tail -30

Disc plin

# Gaseste ce ocupa loc
df -h
du -sh /* 2>/dev/null | sort -rh | head -10

# Fisiere mari in tot sistemul
find / -type f -size +500M 2>/dev/null

# Log-uri mari
ls -lSh /var/log/ | head

# Curatenie sigura
journalctl --vacuum-time=7d    # pastreaza 7 zile journald
apt autoremove && apt clean     # curata pachete
find /tmp -mtime +7 -delete     # sterge tmp vechi de 7 zile

Erori frecvente & solutii

Permission deniedLipsesc permisiunile β†’ sudo sau chmod/chown
No space left on deviceDisc plin β†’ curata log-uri, tmp, cache
Connection refusedServiciu oprit sau port blocat firewall
Command not foundNu e instalat sau nu e in PATH
Too many open filesLimita ulimit depasita β†’ ulimit -n 65535
KilledOOM Killer β€” memorie insuficienta
Segmentation faultBug in aplicatie sau memorie corupta
Address already in usePortul e ocupat β†’ ss -tulnp | grep PORT

Strace & ltrace β€” debugging avansat

strace -p PIDUrmareste apeluri sistem ale unui proces
strace cmdRuleaza comanda cu trace
strace -e openat cmdFiltreaza doar apeluri openat
ltrace cmdUrmareste apeluri librarii
🎨

28. Alias & customizare bash

Productivitate
# ~/.bashrc sau ~/.bash_aliases

# Alias-uri utile
alias ll='ls -lahF --color=auto'
alias la='ls -la'
alias l='ls -CF'
alias grep='grep --color=auto'
alias h='history'
alias c='clear'
alias df='df -h'
alias du='du -h'
alias free='free -h'
alias mkdir='mkdir -pv'
alias cp='cp -iv'         # confirm + verbose
alias mv='mv -iv'         # confirm + verbose
alias rm='rm -iv'         # confirm inainte stergere!

# Alias-uri sistem
alias update='sudo apt update && sudo apt upgrade -y'
alias ports='ss -tulnp'
alias myip='curl -s ifconfig.me'
alias syslog='sudo tail -f /var/log/syslog'

# Prompt colorat cu Git branch
parse_git_branch() {
    git branch 2>/dev/null | sed -n 's/\* \(.*\)/ (\1)/p'
}
export PS1='\[\e[32m\]\u@\h\[\e[0m\]:\[\e[34m\]\w\[\e[33m\]$(parse_git_branch)\[\e[0m\]\$ '

# Istoric mare si cu timestamp
export HISTSIZE=10000
export HISTFILESIZE=20000
export HISTTIMEFORMAT="%d/%m %T  "
export HISTCONTROL=ignoredups:erasedups

Comenzi istoric si navigare rapida

historyLista comenzilor anterioare
history | grep sshCauta in istoric
!!Repeta ultima comanda
!456Ruleaza comanda nr 456 din istoric
!sshRuleaza ultima comanda ce incepe cu ssh
Ctrl+RCauta interactiv in istoric (bck-i-search)
Ctrl+ASalt la inceputul liniei
Ctrl+ESalt la sfarsitul liniei
Ctrl+WSterge cuvantul din stanga
Ctrl+USterge tot de la cursor la inceput
Ctrl+KSterge tot de la cursor la sfarsit
Alt+.Insereaza ultimul argument al comenzii anterioare
TabAutocomplete comanda/fisier
Tab TabAfiseaza toate optiunile
πŸ“Œ

29. Cheatsheet rapid β€” referinta

Quick reference

Semnale kill

SIGHUP (1)Reload configuratie (graceful)
SIGINT (2)Ctrl+C β€” intrerupere
SIGTERM (15)Oprire gradata (default kill)
SIGKILL (9)Oprire fortata β€” nu poate fi ignorata
SIGSTOP (19)Pauza proces (Ctrl+Z)
SIGCONT (18)Reia procesul din pauza

Permisiuni octale uzuale

777rwxrwxrwx β€” toti au tot (evita!)
755rwxr-xr-x β€” executabile, directoare publice
644rw-r--r-- β€” fisiere text standard
600rw------- β€” fisiere private (SSH keys, etc)
700rwx------ β€” directoare private
664rw-rw-r-- β€” scriere grup
640rw-r----- β€” config files cu grup read

Porturi standard

22SSH
25/587SMTP/SMTP-S (mail)
53DNS
80HTTP
443HTTPS
3306MySQL/MariaDB
5432PostgreSQL
6379Redis
27017MongoDB
8080HTTP alternativ (dev/proxy)

Metacaractere bash

*Orice caractere (glob)
?Un singur caracter (glob)
[abc]Oricare din a, b, c
[0-9]Orice cifra
{a,b,c}Brace expansion: genereaza a b c
~Home directory
$Valoarea variabilei
; Separa comenzi (ruleaza secvential)
&&Ruleaza urmatoarea doar daca prima a reusit
||Ruleaza urmatoarea doar daca prima a esuat
&Ruleaza in background
|Pipe: output β†’ input
\Escape caracter special sau continuare linie
#Comentariu in script

Resurse recomandate pentru continuare

man COMANDAManual oficial pentru orice comanda
COMANDA --helpHelp rapid
tldr COMANDAExemple practice (apt install tldr)
linuxcommand.orgTutorial bash complet
explainshell.comExplica orice comanda bash
shellcheck.netVerifica scripturi online
tldr.inbrowser.appComenzi cu exemple practice
OverTheWire BanditInvata Linux prin joc/CTF