Savladajte Linux od nule: Od osnova do naprednih vještina

Posljednje ažuriranje: 12/03/2025
  • Linux je osnova modernih servera, clouda, sigurnosti i razvojnih procesa, tako da njegovo učenje otključava širok spektar tehničkih karijernih puteva.
  • Savladavanje ljuske, datotečnog sistema, uređivanja teksta i Bash skriptiranja daje vam osnovne vještine za automatizaciju zadataka i efikasno upravljanje sistemima.
  • Razumijevanje korisnika, dozvola, umrežavanja, evidentiranja i kontrole procesa je ključno za sigurna, stabilna i održiva Linux okruženja.
  • Praćenje, analiza logova i alati poput cron, SSH i sar omogućavaju vam pouzdano upravljanje, rješavanje problema i skaliranje Linux sistema u stvarnom svijetu.

Naučite Linux

Ako želite stabilnu karijeru u tehnološkom sektoru, učenje Linuxa je jedna od najpametnijih opcija koju možete sebi priuštiti. Od cloud servera i DevOps procesa do laboratorija za sajber sigurnost i superračunara, Linux tiho vodi predstavu iza kulisa. Njegovo savladavanje ne samo da vas čini bržim i efikasnijim u svakodnevnim zadacima – već vam otvara i vrata za uloge u sistem administraciji, cloud inženjerstvu, sigurnosti, SRE i šire.

Ovaj vodič vas vodi od apsolutnih osnova do naprednih Linux tema, držeći stvari praktičnim, skrivenim i realističnim. Počet ćete s razumijevanjem šta je Linux zapravo, kako je izgrađen i distribuiran, te kako ga pokrenuti na vlastitom računaru. Nakon toga, upoznaćete se s komandnom linijom, datotečnim sistemom, uređivanjem teksta, shell skriptiranjem, upravljanjem paketima, korisnicima i dozvolama, umrežavanjem, analizom logova, automatizacijom pomoću crona, kontrolom procesa, rješavanjem problema i još mnogo toga. Bez obzira da li prelazite s Windowsa/macOS-a ili unapređujete svoje postojeće vještine, pronaći ćete mnoštvo materijala koji zapravo možete koristiti na stvarnim sistemima.

Zašto je Linux važan i kako je izgrađen

Linux je besplatan operativni sistem otvorenog koda inspirisan Unixom, a prvi put ga je objavio Linus Torvalds 1991. godine. Otvoreni kod znači da je njegov izvorni kod javno dostupan: svako ga može čitati, mijenjati i distribuirati vlastite verzije. Taj model saradnje pretvorio je Linux u okosnicu moderne infrastrukture: web serveri, cloud platforme, IoT uređaji, Android telefoni, Chromebookovi i mnogo više se oslanjaju na njega svaki dan.

Kada ljudi kažu "Linux", često miješaju tri povezana, ali različita pojma: kernel, operativni sistem i distribuciju. The kernel je osnovni program koji upravlja hardverskim resursima poput memorije, CPU vremena, diskova i uređaja, te pruža sistemske pozive za aplikacije. Pored toga, imate sistemske uslužne programe, biblioteke, ljuske i alate koji zajedno čine kompletan operativni sistem. distribucija (ili „distribucija“) objedinjuje Linux kernel sa svim tim korisničkim softverom, upraviteljem paketa i instalacijskim programom, plus podrazumijevane postavke i politike koje je odabrala zajednica ili dobavljač.

Budući da je kernel otvorenog koda, svako ga može preuzeti, dodati alate i konfiguracije i objaviti vlastitu distribuciju. Zato ćete vidjeti toliko mnogo varijanti: neke male i jednonamjenske, druge potpuno opremljene s hiljadama paketa. Mnoge su "izvedene" iz drugih - na primjer, Ubuntu i Kali su izgrađeni na Debianu i ponovo koriste njegov sistem paketa, repozitorije i veliki dio njegovog lanca alata. Izvedene distribucije dobijaju stabilnost, sigurnosna ažuriranja i ogromne softverske repozitorije od svojih roditelja, dok se vlastiti napor fokusira na posebne funkcije, podrazumijevane postavke ili slučajeve upotrebe.

Popularne distribucije, prilagođene početnicima i naprednim korisnicima, usmjerene su na različitu publiku i radne procese. Ubuntu je jedan od najčešće korištenih i vrlo je prilagođen novim korisnicima, sa snažnom podrškom zajednice. Linux Mint je također orijentiran na početnike i dodaje kodeke i multimedijsku podršku odmah po instalaciji. Arch Linux je minimalan i praktičan, namijenjen iskusnim korisnicima koji žele potpunu kontrolu i DIY pristup. Manjaro se temelji na Archu, ali dodaje grafičke alate i razumne zadane postavke. Kali Linux se fokusira na testiranje penetracije i dolazi s ogromnim arsenalom sigurnosnih i hakerskih alata unaprijed instaliranih.

Instaliranje Linuxa na vašem računaru

Najbolji način da zaista naučite Linux jeste da ga koristite svakodnevno, tako da je prvi korak dobijanje pristupa Linux okruženju s kojim možete sigurno eksperimentisati. Možete instalirati Linux kao glavni operativni sistem, pokretati ga uz Windows, pokrenuti ga u virtuelnoj mašini, koristiti Windows podsistem za Linux ili čak raditi u potpunosti u terminalima zasnovanim na pregledniku ili cloud instancama, ovisno o vašim potrebama i hardveru.

Instaliranje Linuxa kao primarnog operativnog sistema pruža vam najčistije i najbrže iskustvo. Uobičajeni put za početnike je instaliranje Ubuntu LTS-a (Long Term Support) na Bare Metal. Preuzmete službeni ISO, kreirate USB disk za pokretanje (alati poput Rufusa na Windowsu olakšavaju ovaj proces), pokrenete sistem s njega i prođete kroz instalacijski program. LTS izdanja vam daju nekoliko godina sigurnosnih i ažuriranja za održavanje, tako da ne morate često ponovo instalirati računar. Nakon instalacije, samo ponovo pokrenite računar, prijavite se s korisničkim imenom/lozinkom koju ste postavili i spremni ste za prilagođavanje radne površine i instaliranje aplikacija.

Postoji nekoliko naprednih opcija instalacije koje vrijedi istražiti kada se osjećate ugodno. Particioniranje diska vam omogućava da podijelite disk na odvojene particije: root, home i možda namjensku particiju za podatke ili sigurnosnu kopiju. Konfiguracija swap-a može omogućiti hibernaciju ili dati sistemima s malo RAM-a malo prostora za disanje. Ove teme nisu obavezne prvog dana, ali su veoma važne na produkcijskim serverima ili pažljivo podešenim radnim stanicama.

Ako želite zadržati Windows, ali i dalje redovno koristiti Linux, imate nekoliko dobrih opcija. Dvostruko pokretanje vam omogućava da instalirate Linux pored Windowsa i odaberete koji operativni sistem će se pokrenuti prilikom pokretanja; svaki ima svoju particiju, ali samo jedan radi u jednom trenutku. Virtuelne mašine koje koriste alate poput VirtualBoxa ili VMwarea omogućavaju vam da pokrenete Linux kao gostujući operativni sistem unutar Windowsa, dodjeljujući CPU jezgre, RAM, disk i mrežne resurse virtuelnoj mašini. Terminali zasnovani na pregledniku i instance VPS-a u oblaku (AWS EC2, Azure, DigitalOcean i drugi) pružaju vam udaljene Linux ljuske kojima možete pristupiti s bilo kojeg mjesta, obično putem SSH-a.

Na Windowsu 10 i 11, Windows podsistem za Linux (WSL2) je fantastičan način da se potpuni Linux korisnički prostor integriše u vašu Windows radnu površinu. Omogućite funkciju "Windows podsistem za Linux", otvorite terminal s povišenim privilegijama i pokrenete wsl --installPodrazumevano, ovo instalira Ubuntu. Nakon ponovnog pokretanja, biće vam zatraženo da kreirate korisničko ime i lozinku za Linux, a zatim možete pokrenuti Ubuntu iz menija Start i koristiti ga kao običnu Linux ljusku – nisu potrebne teške VM slike.

Bez obzira na to kako instalirate Linux, provest ćete puno vremena u terminalu, zato naučite kako ga brzo otvoriti. Na Ubuntu desktop računarima možete pretražiti "Terminal", zakačiti ga na Dock ili koristiti prečicu na tastaturi Ctrl+Alt+TMnogi upravitelji datoteka vam omogućavaju da otvorite terminal direktno u trenutnoj mapi putem opcije menija koja se pojavljuje desnim klikom miša, kao što je "Otvori u terminalu", što je izuzetno praktično kada radite na direktorijima projekata.

Upoznavanje s osnovama Shell-a i Bash-a

Snaga Linuxa zaista blista kroz komandnu liniju, a program koji vam pruža taj interfejs naziva se ljuska (shell). Vremenom su se pojavile različite ljuske (sh, ksh, csh, zsh, itd.), ali na većini modernih Linux distribucija podrazumijevana je Bash – GNU Bourne Again SHell. Da biste provjerili šta zapravo koristite, pokrenite echo $SHELL; ako vidite nešto slično /bin/bash, nalaziš se u Bashu.

Terminalski emulator je prozor u koji kucate; shell je program koji se izvršava unutar njega i interpretira vaše naredbe. Ljudi često koriste ove riječi naizmjenično, ali pomaže ih mentalno razdvojiti: ako otvorite GNOME Terminal ili Konsole, to je terminal; Bash (ili neka druga ljuska) se pokreće unutar njega i prikazuje prompt tamo gdje upisujete naredbe. Na serveru bez grafičkog interfejsa, moguće je da ste direktno povezani putem SSH-a u ljusku.

Shell prompt obično prikazuje vašeg korisnika, host i trenutni direktorij, a zatim znak koji označava vaš nivo privilegija. Tipičan ne-root upit može izgledati ovako [alice@server ~]$i root prompt kao što je [root@server ~]#. The $ znači redovnog korisnika, dok # upozorava vas da radite kao root i da potencijalno možete probiti sistem jednom pogrešnom komandom.

Većina Linux komandi prati predvidljivu strukturu: naziv komande, opcionalne zastavice i opcionalni argumenti. Generički uzorak izgleda ovako command [options] [arguments]. Na primjer, ls -a /var/log koristi ls komanda sa -a opcija (prikaži skrivene datoteke) i /var/log kao argument (direktorij za popis). Neke naredbe rade dobro bez ikakvih opcija ili argumenata; za druge morate navesti oboje ili će propasti.

Vaš najbolji prijatelj za istraživanje komandi je ugrađeni sistem za ručno podešavanje. Većina uslužnih programa dolazi s man stranicom: run man ls, man grepitd., i dobit ćete detaljnu dokumentaciju koja pokriva upotrebu, opcije i primjere. Dobra je navika da barem jednom preletite stranicu priručnika za svaki novi alat koji uzmete u obzir.

Bash također podržava mnoštvo prečica na tastaturi i pogodnosti koje znatno ubrzavaju vaš radni proces. Pritisnite strelicu prema gore da biste se pomicali kroz prethodne naredbe, Ctrl+A da biste skočili na početak trenutnog reda, Ctrl+K za brisanje od kursora do kraja reda i Tab za automatsko dovršavanje naredbi i putanja datoteka. history Naredba ispisuje vaše nedavne naredbe, koje možete ponovo koristiti ili pretraživati.

Uvijek možete provjeriti pod kojim se korisnikom trenutno ponašate pomoću malog, ali korisnog whoami komandu. Samo ukucajte whoami i pritisnite Enter; shell ispisuje vaše efektivno korisničko ime. Ovo je posebno važno kada prelazite između korisnika (npr. putem su or sudo) i želite biti sigurni da nećete greškom pokrenuti nešto opasno kao root.

Razumijevanje Linux sistema i informacija o hardveru

Prije nego što počnete s podešavanjem računara, korisno je znati s kojim operativnim sistemom, kernelom i procesorom radite. The uname naredba ispisuje informacije o jezgru i sistemu; uname -a prikazuje naziv kernela, naziv hosta, verziju kernela, vrijeme izgradnje, arhitekturu i još mnogo toga. To je brz način da potvrdite da li koristite 64-bitni Linux, koja verzija kernela se koristi i na kojoj platformi se nalazite.

Za dublji uvid u sam procesor, koristite lscpu. Sažima arhitekturu CPU-a, podržane načine rada (32-bitni, 64-bitni), endian raspored, broj jezgara, niti po jezgri, sockete i minimalne/maksimalne brzine takta. Ove informacije su ključne kada određujete veličinu opterećenja, podešavate performanse ili provjeravate da li je softver koji instalirate izgrađen za pravu arhitekturu (na primjer, x86_64 vs ARM).

Rad sa Linux datotečnim sistemom

Linux datotečni sistemi su raspoređeni poput obrnutog stabla s jednim korijenskim direktorijem. / na vrhu. Svaka datoteka i direktorij se nalaze negdje ispod ovog korijena, a kosa crta / se koristi kao separator puta. Puna (apsolutna) putanja kao što je /home/alice/projects počinje od korijena i ide niz drvo, dok relativna putanja poput projects/demo se interpretira relativno u odnosu na vaš trenutni radni direktorij.

Različiti direktoriji najvišeg nivoa imaju specifične, standardizovane svrhe, koje ćete brzo zapamtiti upotrebom. Na primjer, /bin sadrži bitne korisničke komande, /sbin sadrži bitne sistemske binarne datoteke, /boot sadrži datoteke za pokretanje sistema, /etc pohranjuje konfiguraciju cijelog sistema, /home pruža lične imenike za svakog korisnika, /root je početni direktorij root korisnika, /lib i /usr/lib hostirati dijeljene biblioteke, /var sadrži varijabilne podatke poput logova i redova čekanja, i /tmp je područje za privremene datoteke.

Da biste u bilo kojem trenutku vidjeli gdje se nalazite u stablu direktorija, koristite pwd (ispis radnog direktorija). Ako ste skakali okolo, brzo pwd govori vam apsolutnu putanju vašeg trenutnog direktorija. Za kretanje koristite cd: cd /etc odlazi u /etc, cd .. skače za jedan nivo više, cd ../.. ide gore za dva, cd or cd ~ vraća se u vaš početni direktorij i cd - vraća se na prethodni direktorij.

Upravljanje datotekama i mapama iz komandne linije svodi se na nekoliko osnovnih alata. Kreirajte direktorije sa mkdir, opcionalno koristeći -p da biste kreirali ugniježđene putanje odjednom (na primjer, mkdir -p tools/index/helper-scripts). Kreirajte prazne datoteke sa touch file.txtili više datoteka odjednom sa touch file1.txt file2.txt file3.txtUklonite datoteke pomoću rm, rekurzivno obrišite direktorije sa rm -ri uklonite prazne direktorije sa rmdir. The -f zastava uključena rm prisiljava brisanje bez upita, stoga s tim rukujte pažljivo, posebno izvan vašeg početnog direktorija.

Kopiranje, premještanje i preimenovanje se obavlja pomoću cp i mv. Za kopiranje datoteke u drugi direktorij koristite cp source.txt /path/to/dest/Za dupliciranje datoteke pod novim imenom u istom direktoriju, koristite cp old.txt new.txtPremještanje funkcionira slično: mv file1.txt backup/ premješta ga u backup, dok mv oldname.txt newname.txt jednostavno ga preimenuje. Iste naredbe rade i za direktorije sve dok uključite ispravne zastavice kada je to potrebno.

Linux vam također pruža moćne mogućnosti pretraživanja putem find komandu. Osnovni obrazac je find /path -type X -name "pattern", gdje -type f traži obične datoteke, -type d za direktorije, -type l za simboličke veze i -type b/c za blokovske i znakovne uređaje. Možete uskladiti određena imena ili džoker znakove (npr. "*.log" za datoteke dnevnika), uključite skrivene datoteke s uzorcima koji počinju tačkom, pretražujte po veličini s -size (kao +250M za datoteke veće od 250 MB) ili prema vremenu modifikacije sa -mtime (na primjer, -mtime -10 da biste pronašli datoteke promijenjene u posljednjih 10 dana).

Kada želite pregledati sadržaj datoteke, postoji mali skup naredbi koje ćete stalno koristiti. cat ispisuje cijelu datoteku odjednom, što je u redu za male datoteke. less i more omogućava vam da se krećete kroz velike datoteke stranicu po stranicu, pretražujete ih i izlazite sa q. head prikazuje prve redove datoteke, tail prikazuje posljednje redove i tail -f prati datoteku u realnom vremenu – što je bitan trik za praćenje logova. wc broji linije, riječi i bajtove, dok diff Upoređuje dvije datoteke red po red i prikazuje kako se razlikuju, bilo u objedinjenom obliku ili uporedno.

Uređivanje teksta pomoću Vima i Nanoa

Na serverima i mnogim headless sistemima, konfiguraciju i kod uređujete u potpunosti iz terminala, tako da je dobro poznavanje barem jednog konzolnog tekstualnog editora neophodno. Dva editora koja ćete naći gotovo svugdje su Vim i Nano. Oba vam omogućavaju uređivanje tekstualnih datoteka, ali njihove filozofije su različite: Vim je modalni i orijentisan na tastaturu, dizajniran za napredne korisnike; Nano je jednostavniji i lakše uočljiv za početnike.

Vim je nevjerovatno moćan kada savladate njegovu krivulju učenja. Ima više načina rada: normalni (ili komandni) način rada za navigaciju i uređivanje komandi, način rada za unos teksta i vizualni način rada za odabir znakova, linija ili blokova. Počinjete u normalnom načinu rada; pritisnite i, I, a, A, o or O za ulazak u način umetanja na različite načine i korištenje Esc za povratak u normalan način rada. Navigacija se može vršiti pomoću tipki sa strelicama ili klasičnim h, j, k, l; 0 skače na početak reda, $ do kraja, gg na vrh datoteke i G do dna.

Vimove prečice za uređivanje omogućavaju vam da premještate i manipulišete tekstom velikom brzinom kada se jednom nađe u vašoj mišićnoj memoriji. Znak možete izbrisati pomoću x, izbrišite cijeli red sa dd, kopiraj (trzaj) sa yy ili vizualni odabir + yi zalijepite ispod kursora sa p ili iznad sa PPretraga se vrši pomoću /pattern idemo naprijed ili ?pattern unazad; n prelazi na sljedeću utakmicu i N na prethodni. Uobičajeni globalni obrazac pretrage i zamjene je :%s/old/new/g zamijeniti sva pojavljivanja old sa new u datoteci.

Izlazak iz Vima se svodi na komande koje počinju dvotačkom. pogoditi Esc da biste bili sigurni da ste u normalnom režimu, zatim upišite :w spasiti, :q za izlaz (neuspjeh ako imate nesačuvane promjene), :wq (ili :x) za spremanje i izlazak, ili :q! za izlaz i odbacivanje promjena. Također možete podijeliti prozor (:split i :vsplit) i krećite se između panela pomoću Ctrl+w zatim h, j, k or l.

Nasuprot tome, Nano se fokusira na jednostavnost i prilagođenost početnicima. Da biste otvorili ili kreirali datoteku, pokrenite nano filenameKursor pomičete pomoću tipki sa strelicama, kucate da biste umetnuli tekst i koristite prečice navedene na dnu ekrana – obično su u obliku ^O za Ctrl+O, ^X za Ctrl+X, i tako dalje. Ctrl+O spašava, Ctrl+X izlazi (podstičući vas da sačuvate promjene ako je potrebno), Ctrl+K presijeca liniju, Ctrl+U paste i Ctrl+W traži tekst. Opcije poput -l prikazaće brojeve linija i Alt+G omogućava vam direktan skok na određeni red.

Upoznavanje sa Bash skriptiranjem

Kada se jednom osjećate ugodno s ručnim izvršavanjem naredbi, sljedeći veliki korak je ubacivanje nizova naredbi u skripte kako bi se mogle ponovno koristiti i automatizirati. Bash skripta je samo tekstualna datoteka koja sadrži naredbe koje Bash izvršava liniju po liniju. Spremanjem zadataka poput rutina čišćenja, sigurnosnih kopija ili koraka implementacije u skripte, smanjujete greške i štedite mnogo vremena.

Po konvenciji, Bash skripte često imaju .sh proširenje, ali to tehnički nije potrebno. Ono što je mnogo važnije jeste shebang red na vrhu datoteke: nešto poput #!/bin/bash or #!/usr/bin/env bashTaj prvi red govori sistemu koji interpreter da koristi kada pokrenete skriptu. Put do Bash-a možete pronaći pomoću which bash, i koristite to u opisu ako želite biti eksplicitni.

Minimalni primjer skripte bi mogao tražiti direktorij i navesti njegov sadržaj. Mogli biste kreirati run_all.sh sa sadržajem kao što su: shebang, echo koji ispisuje današnji datum (na primjer, korištenjem povratnih aluzija ili $(date)), upit koji od korisnika traži putanju, a read naredba za pohranjivanje tog ulaza u varijablu i konačno ls naredba koja koristi tu varijablu za listanje datoteka. Komentari počinju sa # i interpretator ih ignoriše, tako da možete dokumentovati svaki korak za sebe i druge.

Da biste direktno pokretali skripte, potrebno ih je učiniti izvršnim, a zatim ih pozvati. upotreba chmod u+x script.sh da biste vlasniku dali dozvolu za izvršavanje, zatim je pozovite putem ljuske (bash script.sh) ili ga pokrenite kao ./script.sh iz direktorija u kojem se nalazi. Ako se skripta nalazi na vašem $PATH, možete ga pozvati odakle god želite po imenu.

Bash varijable su dinamički tipizirani kontejneri kojima možete dodijeliti tekst ili brojeve i kasnije ih ponovo koristiti. Dodjeljujete sa name=value (bez razmaka) i referenca sa $name. Na primjer, country=Netherlands zatim echo $country ispisuje vrijednost. Također možete postaviti varijablu na osnovu vrijednosti druge varijable: same_country=$country kopira postojeći sadržaj. Konvencije imenovanja kažu da vaša varijabla treba da počinje slovom ili podvlakom, da se sastoji samo od slova, brojeva i podvlaka i da izbjegava rezervirane ključne riječi poput if, then or fi.

Postoji nekoliko načina za unošenje ulaznih podataka u skriptu i slanje izlaznih podataka negdje drugdje. Unutar skripti, read var čeka da korisnik nešto ukuca i pohranjuje to u varMožete iterirati kroz redove datoteke pomoću while read line; do ...; done < filename petlja. Argumenti komandne linije se prikazuju kao $1, $2itd., dakle skripta koja odjekuje $1 može pozdraviti ime proslijeđeno u komandnoj liniji. Za izlaz koristite echo kao i obično, ali možete ga preusmjeriti pomoću > prepisati datoteku, >> za dodavanje ili kombinovanje s drugim naredbama pomoću cijevi.

Uslovna logika i petlje omogućavaju vašim skriptama da donose odluke i ponavljaju rad. Osnovni if Sintaksa u Bashu koristi zagrade kao što je if [ condition ]; then ... elif [ condition ]; then ... else ... fiMožete testirati numeričke usporedbe (-gt, -lt, itd.), poređenja stringova, postojanje datoteka i još mnogo toga, a uslove možete kombinovati sa logičkim I (-a) i ILI (-o). Petlje dolaze while obrasci koji se nastavljaju dok je uslov tačan, i for petlje koje iteriraju kroz liste kao što su for i in {1..5}; do echo $i; done. case Naredbe vam omogućavaju da uporedite izraz sa skupom obrazaca u čistoj sintaksi sličnoj funkciji switch.

Upravljanje softverom pomoću upravitelja paketa

Za razliku od Windowsa, gdje instalacijske programe često preuzimate sa nasumičnih web stranica, Linux distribucije uglavnom upravljaju softverom putem centraliziranih repozitorija i upravitelja paketa. A paket je samo skup datoteka koje sadrže binarne datoteke programa, biblioteke, metapodatke i instalacijske skripte. Paketi dolaze ili kao izvorni kod (koji zahtijeva kompajliranje) ili kao binarne datoteke specifične za arhitekturu (npr. x86_64) i često zavise od drugih paketa koji se instaliraju.

Na sistemima zasnovanim na Debianu, kao što je Ubuntu, apt Porodica alata je standardni način za rukovanje paketima. Upravitelj paketa čuva indeks dostupnog softvera u konfiguriranim repozitorijima, koji osvježavate pomoću sudo apt updateZa instalaciju paketa koristite sudo apt install htop ili slično; sve potrebne zavisnosti se automatski preuzimaju iz repozitorija. Da biste nadogradili već instalirane pakete, pokrenite sudo apt upgradeDa biste uklonili paket koji vam više nije potreban, koristite sudo apt remove packagenameOperacije i logovi paketa niskog nivoa obrađuju se od strane dpkg, čije logove možete pregledati na /var/log/dpkg.log.

Ponekad ćete preuzimati samostalno .deb datoteke s web stranica dobavljača, a ne iz repozitorija vaše distribucije. U tom slučaju, možete ih instalirati sa sudo dpkg -i package_name.deb iz direktorija u kojem se datoteka nalazi. Ako nedostaju zavisnosti, obično ih možete popraviti pomoću sudo apt -f installDa biste izlistali sve pakete instalirane putem dpkg-a, koristite dpkg --listGrafički frontendovi poput Synaptica pružaju vam grafički korisnički interfejs (GUI) preko istog osnovnog sistema paketa ako za neke zadatke više volite kliktati nego kucati.

Korisnici, grupe, dozvole i sigurnost

Linux je po svojoj prirodi višekorisnički sistem, tako da je razumijevanje korisnika, grupa i dozvola ključno za održavanje sigurnosti računara. Svaki račun je identificiran korisničkim imenom (prilagođeno ljudima) i numeričkim korisničkim ID-om (UID, prilagođeno sistemu). Slično tome, grupe imaju imena i numeričke ID-ove grupa (GID-ove). Postoje posebni računi za servise i demone, a postoji i jedan svemoćni superkorisnički račun koji se zove root sa UID-om 0.

Informacije o korisnicima se prvenstveno pohranjuju u /etc/passwd, a lozinke se čuvaju (heširaju) u /etc/shadow. Tipična linija u /etc/passwd izgleda kao root:x:0:0:root:/root:/bin/bash, što se dijeli na: korisničko ime, rezervirano mjesto za lozinku, UID, primarni GID, opisne informacije, početni direktorij i prijavnu ljusku. Informacije o grupi se nalaze u /etc/group, gdje unosi navode naziv grupe, rezervirano mjesto za lozinku, GID i korisnička imena članova.

Svaki korisnik pripada jednoj primarnoj grupi i opcionalno mnogim dodatnim grupama. Primarna grupa se obično kreira uz korisnika i dijeli njegovo ime; datoteke koje korisnik kreira obično su u vlasništvu ove grupe. Dodatne grupe dodaju dodatne dozvole – na primjer, dodavanje u sudo Grupa na Ubuntuu vam omogućava pokretanje naredbi sa povišenim privilegijama. Možete provjeriti svoje ID-ove i članstvo u grupama pomoću id naredbu i navesti procese povezane s korisnikom putem ps -u username.

Dozvole za datoteke u Linuxu su predstavljene u klasičnom rwx trojke za korisnika, grupu i ostale. Running ls -l prikazuje linije poput -rw-rw-r-- or drwxrwx---, gdje prvi znak označava tip datoteke (- za običnu datoteku, d za direktorij), a sljedećih devet znakova su tri seta r (čitaj), w (napiši) i x (izvrši). Prva trojka se odnosi na vlasnika datoteke, druga na grupu, a treća na sve ostale. Za direktorije, "izvrši" kontrolira mogućnost ulaska u direktorij i pristupa sadržaju; za datoteke kontrolira može li se datoteka pokrenuti kao program ili skripta.

Dozvole možete promijeniti pomoću chmod komandu u simboličnom ili numeričkom obliku. Simbolički način rada koristi slova za klase (u, g, o) i +, -, = za dodavanje, uklanjanje ili postavljanje dozvola, npr. chmod u+x script.sh dodati dozvolu za izvršavanje za vlasnika. Numerički (oktalni) način predstavlja dozvole kao zbirove 4 (čitanje), 2 (pisanje) i 1 (izvršavanje), dajući tri cifre za korisnika, grupu i ostale; chmod 751 file seta rwxr-x--xVrijedi se osjećati ugodno s oba stila.

Promjene vlasništva se obrađuju pomoću chown, što može mijenjati korisnika, grupu ili oboje. chown newuser filename mijenja vlasnika, chown newuser:newgroup filename prilagođava i vlasnika i grupu, i chown :groupname dir samo mijenja grupu. -R Opcija rekurzivno primjenjuje promjene vlasništva na sve datoteke i direktorije unutar datog direktorija, što je korisno za pripremu stabala aplikacija ili dijeljenih mapa.

Promjena identiteta se vrši pomoću su i sudo, i trebali biste znati kada koji koristiti. su otheruser pokreće ljusku kao otheruser nakon što unesete lozinku tog korisnika; su - otvara punu prijavnu ljusku, ažurirajući varijable okruženja. sudo sigurnije je za svakodnevne administratorske zadatke: omogućava odobrenim korisnicima da izvršavaju pojedinačne naredbe s povećanim privilegijama dok istovremeno sve evidentiraju /var/log/auth.logAko korisniku nije dozvoljeno korištenje sudo, pokušaji će biti zabilježeni i odbijeni.

Upravljanje korisnicima u komandnoj liniji koristi alate kao što su useradd, usermod, userdel i passwd. sudo useradd username kreira novi račun (iako ćete često preferirati omotače višeg nivoa koji također kreiraju početne direktorije i postavljaju ljuske prema zadanim postavkama). usermod omogućava vam promjenu korisničkih imena, početnih direktorija, ljuski, članstva u grupama i još mnogo toga. userdel uklanja račune, sa -r također brišući njihove početne direktorije. passwd postavlja ili mijenja lozinke – pokrenite ga kao root s korisničkim imenom da biste postavili tuđu lozinku ili bez argumenata da biste promijenili svoju.

Udaljeno povezivanje putem SSH-a

Secure Shell (SSH) je standardni način za sigurno prijavljivanje na udaljene Linux sisteme putem mreže. Koristi enkripciju, kriptografiju javnog ključa i snažnu autentifikaciju za zaštitu vašeg prometa. Zadani port je 22, iako ga mnogi administratori mijenjaju kako bi smanjili šum od automatiziranih skeniranja. Na strani klijenta, osnovni alat je jednostavno ssh.

Da biste se povezali na udaljeni server, potrebna vam je IP adresa ili naziv hosta servera, korisničko ime i obično lozinka ili ključ. Format komande je ssh username@server_ip, na primjer ssh john@192.168.1.10Prilikom prvog povezivanja, SSH će vas zamoliti da potvrdite otisak prsta ključa hosta servera; nakon toga, bit ćete upitani za korisničku lozinku (osim ako ne koristite autentifikaciju zasnovanu na ključu). Nakon prijave, nalazite se na shell promptu na udaljenom računaru i možete pokretati naredbe kao da sjedite za njegovom konzolom.

Ako SSH servis osluškuje nestandardni port, navedite ga pomoću -p opcija. Na primjer, ako vaš server koristi port 2222 za SSH, povezali biste se sa ssh -p 2222 username@server_ipTakođer možete konfigurirati aliase hosta i zadane portove u ~/.ssh/config kako biste izbjegli kucanje svih detalja svaki put.

Analiziranje zapisnika i tekstualnih podataka

Na aktivnom sistemu, logovi su vaša crna kutija za snimanje: oni vam govore šta se dogodilo, kada i često zašto. Dnevnici aplikacija, sistemski dnevnici, sigurnosni dnevnici i mrežni dnevnici mogu narasti u hiljade ili milione redova, tako da su vam potrebni efikasni načini za njihovo pretraživanje, filtriranje i sumiranje. Srećom, Unixov alatni set ima nekoliko komplementarnih alata za obradu teksta koji ovdje blistaju.

grep je vaš glavni alat za pronalaženje linija koje odgovaraju uzorku u datotekama ili streamovima. Osnovna upotreba je grep "search_string" filename, ali opcije ga čine mnogo fleksibilnijim: -r rekurzivno pretražuje direktorije, -i zanemaruje velika i mala slova, -n prikazuje brojeve linija, -c broji odgovarajuće linije, -v invertuje podudaranje (prikazuje linije koje se ne podudaraju), i -w ograničava podudaranja na cijele riječi. grep -l prikazuje samo nazive datoteka koji sadrže podudaranje, što je korisno kada skenirate više datoteka odjednom.

sed (stream editor) obrađuje tekst red po red, primjenjujući naredbe poput zamjene, brisanja i ispisa. Klasičan primjer zamjene je sed 's/old-text/new-text/' file, koji zamjenjuje prvo pojavljivanje old-text u svakoj liniji sa new-text. Dodavanje a g zastavica ga čini globalnim po liniji. Sa -n '/pattern/p', možete ispisati samo linije koje odgovaraju uzorku, a sa '/pattern/d' Možete izostaviti odgovarajuće linije iz izlaza. Regularni izrazi vam omogućavaju da hirurški izdvojite ili transformišete dijelove linija zapisa kao što su datumi, ID-ovi ili statusni kodovi.

awk je mali jezik za rad sa strukturiranim tekstom, posebno podacima zasnovanim na kolonama poput logova. Njegov osnovni oblik je awk 'pattern { action }' file, gdje se svaki ulazni red automatski dijeli na polja $1, $2itd., koristeći razmake kao zadani separator (može se konfigurirati pomoću -F). Možda biste koristili awk '{ print $1, $2 }' logfile za ispis datuma i vremena, ili awk '/ERROR/ { print $0 }' da se prikažu samo linije greške. Napredniji obrasci vam omogućavaju da kreirate tabele frekvencija, izračunavate agregate i sumirate metrike u hodu.

cut, sort i uniq umetnite se u ovaj alatni okvir kako biste izdvojili i agregirali određene dijelove informacija. cut izvlači određena polja kojima je dodijeljen razdjelnik i brojevi polja, kao što je cut -d ' ' -f 3 logfile da biste dobili treću kolonu. sort slaže redove po abecednom ili numeričkom redu, sa -n za numeričko sortiranje, -r za obrnuti redoslijed i -k da biste odabrali ključ za sortiranje. uniq sažima uzastopne duplikatne redove i sa -c broji ih. Spaja ih zajedno – na primjer, cut -d ' ' -f 3 logfile | sort | uniq -c – je klasičan obrazac za generisanje broja nivoa logova ili kodova grešaka.

Procesi, poslovi i signali

Svaka komanda koju pokrenete na Linuxu je proces, a poznavanje načina pregleda, prioritizacije i zaustavljanja procesa ključno je za administraciju sistema. Svaki proces dobija numerički ID procesa (PID) i ID roditeljskog procesa (PPID), a većina procesa na kraju prati svoje porijeklo do systemd ili neki drugi init sistem sa PID-om 1. Procesi troše CPU, memoriju i druge resurse i prolaze kroz stanja kao što su rad, spavanje, zaustavljanje i zombi.

The ps Komanda vam daje snimke onoga što se izvršava; uobičajeno ps aux obrazac je posebno praktičan. Prikazuje korisnika, PID, korištenje CPU-a i memorije, veličine virtualne i rezidentne memorije, kontrolni terminal, stanje, vrijeme početka, vrijeme CPU-a i naredbu korištenu za pokretanje procesa. STAT kolona kodira stanje: R za trčanje, S i I za spavanje, D za neprekidno spavanje (obično I/O), T zaustavljeno i Z za zombi procese koji čekaju da ih njihov roditelj požnje.

"Poslovi" ljuske su procesi koje ste pokrenuli iz trenutne ljuske, a koje možete premještati između prednjeg plana i pozadine. Dodavanje & na komandu, kao što je sleep 300 &, odmah ga pokreće u pozadini. jobs naredba ih navodi s brojevima poslova kao što je [1], [2]itd. Posao možete staviti u prvi plan pomoću fg %1, obustavite ga sa Ctrl+Zi nastavite ga u pozadini sa bg %1Ovo je posebno korisno kada izvršavate duge zadatke dok istovremeno koristite isti terminal za druge naredbe.

Za direktno prekidanje ili kontrolu procesa, koriste se signali putem naredbi kao što su kill, killall i pkill. kill PID šalje SIGTERM po defaultu, uljudno tražeći od procesa da se završi. kill -9 PID šalje SIGKILL, što ga nasilno ubija bez čišćenja. Drugi uobičajeni signali uključuju SIGHUP (često se koristi za ponovno učitavanje konfiguracija), SIGINT (slično Ctrl+C), SIGSTOP (pauza) i SIGCONT (rezime). killall processname i pkill pattern omogućava vam da ciljate sve procese po imenu ili regex obrascu, respektivno.

Ulaz, izlaz, preusmjeravanje i cjevovodi

Svaki proces počinje s tri standardna toka: standardnim ulazom (stdin), standardnim izlazom (stdout) i standardnom greškom (stderr). U Linuxu, ovo odgovara deskriptorima datoteka 0, 1 i 2. Podrazumevano, stdin je vaša tastatura, a stdout i stderr idu na vaš terminal, ali ih možete preusmjeriti na datoteke ili druge procese pomoću jednostavnih operatora.

Preusmjeravanje vam omogućava da snimite izlaz ili poruke o grešci u datoteke ili ih pomiješate zajedno. korišćenje > prepisuje datoteku sa stdout-om (npr. ls > files.txt), dok >> dodaje umjesto prepisivanja. Možete preusmjeriti stderr odvojeno sa 2> error.txtDa biste poslali i stdout i stderr u istu datoteku, možete uraditi sljedeće: command > all_output.txt 2>&1, što znači „pošalji stdout na all_output.txt a zatim pošaljite stderr gdje god stdout trenutno ide”.

Cjevovodi povezuju naredbe tako da izlaz jedne postaje ulaz sljedeće. Operater cijevi | je ljepilo: ls | grep image navodi datoteke, a zatim filtrira one koje sadrže image u njihovim imenima. Ova kompozibilnost je osnovna Unix filozofija: umjesto jednog ogromnog alata, povezujete mnogo malih alata za rješavanje složenih problema.

Raspoređivanje i automatizacija pomoću Crona

Za repetitivne zadatke – sigurnosne kopije, čišćenje, izvještaje, provjere ispravnosti – cron je ugrađeni planer poslova koji održava stvari u automatskom režimu. Pozadinski demon (crond ili ekvivalentno) čita crontab datoteke po korisniku i sistemske datoteke i izvršava određene naredbe u zakazano vrijeme. Svaki korisnik može definirati vlastiti crontab, a pristup se može kontrolirati putem /etc/cron.allow i /etc/cron.d/cron.deny na mnogim sistemima.

Uređujete svoj crontab sa crontab -e i navedite trenutne unose sa crontab -l. Svaki red u crontabu ima pet vremenskih polja (minuta, sat, dan u mjesecu, mjesec, dan u sedmici) nakon čega slijedi naredba koju treba izvršiti. Zvjezdice služe kao džoker znakovi, dozvoljeni su rasponi i liste, a vrijednosti koraka poput */5 znači „svakih 5 jedinica“. Na primjer, 0 22 * * 1-5 radi od 22:00 od ponedjeljka do petka, i */1 * * * * radi svake minute.

Kao jednostavan primjer, možete zakazati skriptu koja će zapisati datum i vrijeme jednom u minuti u datoteku. Scenarij bi mogao biti date-script.sh sadrži shebang i echo $(date) >> /path/to/date-out.txtNakon što ga učinite izvršnim, dodali biste cron unos poput */1 * * * * /bin/sh /home/username/date-script.sh. Prekovremeno, date-out.txt popunjava se linijama sa vremenskim oznakama, omogućavajući vam da provjerite da li se cron pokreće po rasporedu.

Rješavanje problema s cronom obično uključuje provjeru rasporeda, provjeru logova i snimanje izlaza. Prvo, dvaput provjerite polja za podešavanje vremena koristeći pomoćnu stranicu poput crontab.guru ako je potrebno. Zatim pregledajte sistemske logove (na primjer, /var/log/syslog na Ubuntuu) za unose koji spominju CRON i vašu naredbu. Također možete preusmjeriti stdout i stderr cron zadatka u log datoteku sa sintaksom poput * * * * * sh /path/to/script.sh &> /path/to/log_file.log da uhvate greške koje bi inače nestale.

Osnove umrežavanja na Linuxu

Linux nudi bogat skup mrežnih alata za pregled interfejsa, veza, rutiranja i povezivosti. Tradicionalne komunalne usluge poput ifconfig i netstat se i dalje široko koriste, iako moderne zamjene poput ip apartman i ss postoje također. Koristit ćete ih kada budete određivali IP adrese, testirali dostupnost ili otklanjali greške u čudnom ponašanju mreže.

ifconfig (ili ip addr) navodi mrežne interfejse i njihovu konfiguraciju. Vidjet ćete unose za fizičke interfejse (kao što su eth0 or wlp3s0), povratna petlja (lo) i eventualno virtualne mostove. Polja uključuju IPv4 i IPv6 adrese, mrežne maske, broadcast adrese, MAC adrese i statistiku o poslanim/primljenim paketima i greškama.

netstat izvještava o aktivnim vezama, socketima za slušanje, tabelama usmjeravanja i statistikama po protokolu. Opcije poput -a prikaži sve utičnice, -l prikazuje samo portove za slušanje, -t prikazuje TCP veze, -u prikazuje UDP, -r ispisuje tabelu usmjeravanja kernela i -p dodaje PID/naziv programa svakoj listi konekcija, što je vrlo korisno kada se utvrđuje koji je proces vezan za koji port.

Jednostavno testiranje dostupnosti se često vrši pomoću ping, koji šalje ICMP echo zahtjeve hostu. ping google.com prikazivat će vrijeme povratnog putovanja i gubitak paketa dok ga ne zaustavite sa Ctrl+CSažetak na kraju vam govori koliko je paketa poslano i primljeno, te koji postotak je izgubljen, što vam pomaže da uočite nestabilne veze ili probleme s DNS-om.

curl je još jedan bitan alat, ovaj put za interakciju s HTTP(S) i drugim protokolima preko URL-ova. Podrazumevano, curl URL izdaje GET zahtjev i ispisuje tijelo odgovora. Sa -o, rezultat možete sačuvati u datoteku; pomoću -I, zahtijevate samo zaglavlja, što je odlično za provjeru kodova odgovora i metapodataka servera. Posebno je korisno za brzo testiranje HTTP API-ja ili udaljenih krajnjih tačaka iz komandne linije.

Praćenje i rješavanje problema Linux sistema

Ozbiljan rad na Linuxu uvijek uključuje praćenje i rješavanje problema: pronalaženje uskih grla prije nego što eksplodiraju i brzo dijagnosticiranje problema kada se pojave. Koristit ćete mnoge od već spomenutih alata, plus neke specijalizirane, za procjenu opterećenja CPU-a, pritiska memorije, korištenja diska, ponašanja procesa i stanja mreže.

uptime daje vam brz pregled koliko dugo sistem radi i kako izgledaju prosječna opterećenja. Tri broja na kraju predstavljaju prosječne dužine reda čekanja u posljednjih 1, 5 i 15 minuta. Ako ih podijelite s brojem procesora (što možete vidjeti putem lscpu), dobijate predstavu o tome koliko je svaka jezgra zauzeta. Konstantno visoki prosječni iznosi opterećenja u odnosu na broj CPU-a obično ukazuju na zasićenost CPU-a ili blokirane procese koji čekaju na I/O.

Korištenje memorije i diska se lako provjerava pomoću free i df. free -mh prikazuje ukupnu, korištenu i dostupnu memoriju i swap, u jedinicama koje ljudi mogu čitati. Normalno je da Linux koristi puno memorije za keš memoriju i bafere, stoga se fokusirajte na "dostupnu" vrijednost i korištenje swapa. df -h prikazuje prostor na disku i iskorištenost za svaki montirani datotečni sistem; kao opće pravilo, održavanje iskorištenosti ispod ~80% izbjegava neke probleme s performansama i fragmentacijom.

Uvid u procese u realnom vremenu je ono što top i srodni alati blistaju. Running top prikazuje dinamičan, ažuriran prikaz statistike CPU-a, memorije i procesa. Možete sortirati po različitim kolonama, pretraživati ​​procese, pa čak i zaustaviti proces pritiskom na k i ukucavanjem njegovog PID-a. Naprednije varijante poput htop nude boje, podršku za miš i lakšu navigaciju, ali osnovni koncepti su isti.

Stanje mreže često se svodi na portove, veze i gubitak paketa. Alat poput netstat (ili ss) pokazuju koji su portovi u LISTEN, ESTABLISHED, TIME_WAIT i druga TCP stanja, što vam omogućava da uočite iscrpljenost portova ili nekontrolirani rast veze. ping pomaže u otkrivanju gubitka paketa i skokova latencije. Za dublju inspekciju na nivou paketa, tcpdump može uhvatiti promet do .pcap datoteke za kasniju analizu u Wiresharku.

Za podatke o historijskim performansama, sar komanda (iz sysstat paket) je nevjerovatno koristan. jednom sysstat Ako je instaliran i omogućen, sistem periodično zapisuje statistiku CPU-a, memorije, mreže i diska u datoteke u /var/log/sysstatOve zapise možete kasnije pretraživati ​​pomoću sar -u za korištenje CPU-a, sar -r za pamćenje, sar -S za zamjenu, sar -d za blokovske uređaje ili sar -n DEV za mrežne interfejse, specificiranje intervala i brojača ili direktno ukazivanje na dnevne arhive kao što su sa04 za određeni dan u mjesecu.

Konačno, uvijek imajte na umu da su zapisnici vaša naracija o tome šta je sistem radio u vrijeme kada se problem pojavio. Prije ponovnog pokretanja servisa ili servera, kopirajte ili napravite snimke relevantnih logova kako ne biste izgubili ključni kontekst. U kombinaciji s metrikama iz alata kao što su sar, top i free, pomoći će vam da rekonstruišete uzroke, poboljšate pouzdanost i izbjegnete ponavljanje incidenata. Vremenom, ova petlja povratnih informacija je ono što vas transformiše iz "Mogu pratiti tutorijal" u "Mogu upravljati produkcijskim sistemima s povjerenjem".

Slični postovi: