Si të kontrolloni aksesin sudo në Linux


Komanda sudo  ju lejon të ekzekutoni komanda në Linux sikur të ishit dikush tjetër, si root. sudo ju lejon gjithashtu të kontrolloni se kush mund të ketë akses në aftësitë e roots, me hollësi. Jepuni përdoruesve akses të plotë ose lërini të përdorin një nëngrup të vogël komandash. Ne ju tregojmë se si.

sudo dhe lejet e rrënjës

Të gjithë kemi dëgjuar (thjeshtimin e tepërt) se gjithçka në Linux është një skedar. Në të vërtetë, pothuajse çdo gjë në sistemin operativ nga proceset, skedarët, drejtoritë, bazat dhe tubacionet flasin me kernelin përmes një përshkruesi skedari. Pra, megjithëse çdo gjë nuk është një skedar, shumica e objekteve të sistemit operativ trajtohen sikur të ishin. Aty ku është e mundur, dizajni i sistemeve operative Linux dhe Unix i përmbahet këtij parimi.

Koncepti i çdo gjë është një skedar është i gjerë në Linux. Është e lehtë të shihet atëherë, se si lejet e skedarëve në Linux u bënë një nga shtyllat kryesore të privilegjeve dhe të drejtave të përdoruesve. Nëse zotëroni një skedar ose drejtori (një lloj skedari i veçantë), mund të bëni atë që dëshironi me të, duke përfshirë modifikimin, riemërtimin, zhvendosjen dhe fshirjen e tij. Ju gjithashtu mund të vendosni lejet në skedar në mënyrë që përdoruesit e tjerë ose grupet e përdoruesve të mund të lexojnë, modifikojnë ose ekzekutojnë skedarin. Të gjithë udhëhiqen nga këto leje.

Gjithkush që është, përveç superpërdoruesit, i njohur si root. Llogaria root është një llogari e privilegjuar posaçërisht. Ai nuk është i kufizuar nga lejet për asnjë nga objektet në sistemin operativ. Përdoruesi rrënjë mund të bëjë gjithçka për çdo gjë dhe, pothuajse, në çdo kohë.

Sigurisht, kushdo që ka qasje në fjalëkalimin roots mund të bëjë të njëjtën gjë. Ata mund të bëjnë kërdi ose me qëllim të keq ose aksidentalisht. Në fakt, përdoruesi root mund të bëjë kërdi duke bërë gjithashtu një gabim. Askush nuk është i pagabueshëm. Është gjë e rrezikshme.

Kjo është arsyeja pse tani konsiderohet praktika më e mirë që mos të identifikoheni si root fare. Hyni me një llogari të zakonshme përdoruesi dhe përdorni sudo për të ngritur privilegjet tuaja për kohëzgjatjen e shkurtër që ju nevojiten. Shpesh kjo është vetëm për të lëshuar një komandë të vetme.

Lista e sudoers

sudo ishte instaluar tashmë në kompjuterët Ubuntu 18.04.3, Manjaro 18.1.0 dhe Fedora 31 të përdorura për të studiuar këtë artikull. Kjo nuk është një surprizë. sudo ka ekzistuar që nga fillimi i viteve 1980 dhe është bërë mjeti standard i funksionimit të superpërdoruesit për pothuajse të gjitha shpërndarjet.

Kur instaloni një shpërndarje moderne, përdoruesi që krijoni gjatë instalimit i shtohet një liste përdoruesish të quajtur sudoers. Këta janë përdoruesit që mund të përdorin komandën sudo. Për shkak se keni fuqi sudo, mund t'i përdorni ato për të shtuar përdorues të tjerë në listën e sudoers.

Natyrisht, është e pamatur t'i jepet statusi i plotë i superpërdoruesit dashje pa dashur, ose kujtdo që ka vetëm një nevojë të pjesshme ose specifike. Lista e sudoers ju lejon të specifikoni se me cilat komanda u lejohet përdoruesve të ndryshëm të përdorin sudo. Në këtë mënyrë, ju nuk u jepni atyre çelësat e mbretërisë, por ata ende mund të përmbushin atë që duhet të bëjnë.

Ekzekutimi i një komande si një përdorues tjetër

Fillimisht, u quajt superuser do, sepse ju mund t'i bëni gjërat si superpërdoruesi. Shtrirja e tij është zgjeruar tani, dhe ju mund të përdorni sudo për të ekzekutuar një komandë sikur të ishit ndonjë përdorues. Është riemërtuar për të pasqyruar atë funksionalitet të ri. Tani quhet zëvendësues i përdoruesit.

Për të përdorur sudo për të ekzekutuar një komandë si një përdorues tjetër, duhet të përdorim opsionin -u (përdorues). Këtu, ne do të ekzekutojmë komandën whoami si përdoruesi mary. Nëse përdorni komandën sudo pa opsionin -u, do ta ekzekutoni komandën si root.

Dhe sigurisht, për shkak se po përdorni sudo, do t'ju kërkohet fjalëkalimi.

sudo -u mary whoami

Përgjigja nga whoami na tregon se llogaria e përdoruesit që ekzekuton komandën është mary.

Ju mund të përdorni komandën sudo për t'u identifikuar si përdorues tjetër pa e ditur fjalëkalimin e tij. Do t'ju kërkohet për fjalëkalimin tuaj. Duhet të përdorim opsionin -i (login).

sudo -i -u mary
pwd
whoami
ls -hl
exit

Ju jeni identifikuar si mary. Skedarët .bashrc, .bash_aliases dhe .profile për llogarinë e përdoruesit mary përpunohen saktësisht sikur pronari i llogarisë së përdoruesit mary të ishte identifikuar vetë.

  • Rreshti i komandës ndryshon për të pasqyruar këtë është një sesion për llogarinë e përdoruesit mary.
  • Komanda pwd riprodhon se tani jeni në dosjen kryesore të  marys.
  • whoami na tregon se po përdorni llogarinë e përdoruesit mary.
  • Skedarët në drejtori i përkasin llogarisë së përdoruesit mary.
  • Komanda dalje ju kthen në sesionin normal të llogarisë suaj të përdoruesit.

Redaktimi i skedarit sudoers

Për të shtuar përdorues në listën e njerëzve që mund të përdorin sudo , duhet të redaktoni skedarin sudoers. Është shumë e rëndësishme që ta bëni këtë vetëm duke përdorur komandën visudo. Komanda visudo parandalon shumë njerëz që të përpiqen të modifikojnë skedarin sudoers menjëherë. Ai kryen gjithashtu kontrollin dhe analizimin e sintaksës në përmbajtjen e skedarit ndërsa i ruani ato.

Nëse modifikimet tuaja nuk i kalojnë testet, skedari nuk ruhet verbërisht. Ju merrni opsione. Mund t'i anuloni dhe braktisni ndryshimet,  të ktheheni dhe t'i modifikoni përsëri ndryshimet ose të detyroni që modifikimet e pasakta të ruhen. Opsioni i fundit është një ide seriozisht e keqe. Mos u tundoni ta bëni këtë. Ju mund ta gjeni veten në një situatë ku të gjithë janë bllokuar aksidentalisht nga përdorimi i sudo.

Edhe pse filloni procesin e redaktimit duke përdorur komandën visudo, visudo nuk është një redaktues. Ai thërret një nga redaktorët tuaj ekzistues për të kryer redaktimet e skedarit. Në Manjaro dhe Ubuntu, komanda visudo nisi redaktorin e thjeshtë nano. Në Fedora, visudo lançoi më të aftë—por më pak intuitiv—vim.

Nëse preferoni të përdorni nano në Fedora, mund ta bëni këtë lehtësisht. Së pari, instaloni nano:

sudo dnf instaloni nano

Dhe pastaj visudo duhej të thirrej me këtë komandë:

sudo EDITOR=nano visudo

Duket si një kandidat i mirë për një pseudonim. Redaktori nano hapet me skedarin sudoers të ngarkuar në të.

Shtimi i përdoruesve në grupin sudo

Përdorni visudo për të hapur skedarin sudoers. Ose përdorni këtë komandë ose atë të përshkruar më sipër për të specifikuar redaktorin e zgjedhjes suaj:

sudo visudo

Lëvizni nëpër skedarin sudoers derisa të shihni përkufizimin e hyrjes %sudo.

Shenja e përqindjes tregon se ky është një përkufizim grupi dhe jo një përkufizim i përdoruesit. Në disa shpërndarje, linja %sudo ka një hash # në fillim të rreshtit. Kjo e bën rreshtin një koment. Nëse është kështu, hiqni hash-in dhe ruani skedarin.

Linja %sudo ndahet si kjo:

  • %sudo: Emri i grupit.
  • ALL=: Ky rregull zbatohet për të gjithë hostet në këtë rrjet.
  • (ALL:ALL): anëtarët e këtij grupi mund të ekzekutojnë komanda si të gjithë përdoruesit dhe të gjithë grupet.
  • Të gjitha: anëtarët e këtij grupi mund të ekzekutojnë të gjitha komandat.

Për ta riformuluar atë pak, anëtarët e këtij grupi mund të ekzekutojnë çdo komandë, si çdo përdorues ose çdo grup, në këtë kompjuter ose në çdo host tjetër në këtë rrjet. Pra, një mënyrë e thjeshtë për t'i dhënë dikujt privilegje root dhe aftësinë për të përdorur sudo, është shtimi i tyre në grupin sudo.

Ne kemi dy përdorues, Tom dhe Mary, me llogari përdoruesish tom dhe mary respektivisht. Ne do të shtojmë llogarinë e përdoruesit tom në grupin sudo me komandën usermod. Opsioni -G (grupet) specifikon grupin ku do të shtojmë llogarinë tom. Opsioni -a (append) shton këtë grup në listën e grupeve ku llogaria e përdoruesit tom është tashmë. Pa këtë opsion, përdoruesi llogaria tom do të vendoset në grupin e ri, por do të hiqet nga çdo grup tjetër.

sudo usermod -a -G sudo tom

Le të kontrollojmë se në cilat grupe është Mary:

groups

Llogaria e përdoruesit mary është vetëm në grupin  mary  .

Le të kontrollojmë me Tomin:

groups

Llogaria e përdoruesit tom—dhe për rrjedhojë, Tom—është në grupet tom dhe sudo.

Le të përpiqemi ta detyrojmë Marinë të bëjë diçka që kërkon privilegje sudo.

sudo less /etc/shadow

Mary nuk mund të shikojë brenda skedarit të kufizuar /etc/shadow. Ajo merr një deklaratë të butë për përpjekjen për të përdorur sudo pa leje. Le të shohim se si ia del Tom:

sudo less /etc/shadow

Sapo Tom fut fjalëkalimin e tij, atij i shfaqet skedari /etc/shadow.

Vetëm duke e shtuar atë në grupin sudo, ai është ngritur në radhët elitare të atyre që mund të përdorin sudo. Plotësisht i pakufizuar.

Dhënia e përdoruesve të drejta sudo të kufizuara

Tomit i janë dhënë të drejtat e plota sudo. Ai mund të bëjë gjithçka që mund të bëjë root—ose kushdo tjetër në grupin sudo. Kjo mund t'i japë atij më shumë pushtet nga sa jeni të lumtur t'i dorëzoni. Ndonjëherë ekziston një kërkesë që një përdorues të kryejë një funksion që kërkon privilegje root, por nuk ka një rast të justifikueshëm që ai të ketë akses të plotë sudo. Ju mund ta arrini atë ekuilibër duke i shtuar ato në skedarin sudoers dhe duke renditur komandat që mund të përdorin.

Le të takojmë Harry-n, pronarin e llogarisë së përdoruesit harry. Ai nuk është në grupin sudo dhe nuk ka privilegje sudo.

groups

Është e dobishme që Harry të jetë në gjendje të instalojë softuer, por ne nuk duam që ai të ketë të drejta të plota sudo. OK, nuk ka problem. le të ndezim visudo:

sudo visudo

Lëvizni poshtë nëpër skedar derisa të kaloni përkufizimet e grupit. Ne do të shtojmë një rresht për Harry-n. Për shkak se ky është një përkufizim përdoruesi dhe jo një përkufizim grupi, nuk kemi nevojë ta fillojmë rreshtin me një shenjë përqindjeje.

Hyrja për llogarinë e përdoruesit Harry është:

harry    ALL=/usr/bin/apt-get

Vini re se ekziston një skedë midis harry dhe ALL=.

Kjo lexohet pasi llogaria e përdoruesit harry mund të përdorë komandat e listuara në të gjithë hostet e lidhur në këtë rrjet. Ekziston një komandë e listuar, e cila është /usr/bin/apt-get. Ne mund t'i japim Harrit qasje në më shumë se një komanda duke i shtuar ato në listën e komandave, të ndara me presje.

Shtoni rreshtin në skedarin sudoers dhe ruajeni skedarin. Nëse dëshironi të kontrolloni dy herë nëse rreshti është sintaksorisht i saktë, ne mund t'i kërkojmë visudo të skanojë skedarin dhe të kontrollojë sintaksën për ne, duke përdorur -c (kontrollo vetëm) opsion:

sudo visudo -c

Kontrollet bëhen dhe visudo raporton se gjithçka është mirë. Harry tani duhet të jetë në gjendje të përdorë apt-get për të instaluar softuer, por duhet të refuzohet nëse ai përpiqet të përdorë ndonjë komandë tjetër që kërkon sudo.

sudo apt-get install finger

Harry-t i janë dhënë të drejtat e duhura sudo dhe ai është në gjendje të instalojë softuerin.

Çfarë ndodh nëse Harry përpiqet të përdorë një komandë tjetër që kërkon sudo?

sudo shutdown now

Harry pengohet të ekzekutojë komandën. Ne i kemi dhënë me sukses akses specifik, të kufizuar. Ai mund të përdorë komandën e emëruar dhe asgjë tjetër.

Përdorimi i pseudonimeve të përdoruesve të sudoers

Nëse duam t'i japim Marisë të njëjtat privilegje, mund të shtojmë një rresht në skedarin sudoers për llogarinë e përdoruesit mary në të njëjtën mënyrë siç bëmë me Harry-n. Një mënyrë tjetër, më e pastër, për të arritur të njëjtën gjë është të përdorni një User_Alias.

në skedarin sudoers, një User_Alias përmban një listë të emrave të llogarive të përdoruesve. Emri i User_Alias mund të përdoret më pas në një përkufizim për të përfaqësuar të gjitha ato llogari përdoruesish. Nëse dëshironi të ndryshoni privilegjet për ato llogari përdoruesish, keni vetëm një rresht për të modifikuar.

Le të krijojmë një User_Alias dhe ta përdorim atë në skedarin tonë sudoers.

sudo visudo

Shto Përdoruesi_Alias duke shkruar:

User_Alias INSTALLERS = harry, mary

Çdo element është i ndarë nga një hapësirë, jo një skedë. Logjika ndahet si më poshtë:

  • User_Alias: Kjo tregon visudo se do të jetë një User_Alias.
  • INSTALLUESIT: Ky është një emër arbitrar për këtë pseudonim.
  • = harry, mary: Lista e përdoruesve që duhen përfshirë në këtë pseudonim.

Tani do të modifikojmë rreshtin që shtuam më parë për llogarinë e përdoruesit harry:

harry    ALL=/usr/bin/apt-get

Ndryshojeni në mënyrë që të lexojë:

INSTALLERS    ALL=/usr/bin/apt-get

Kjo thotë se të gjitha llogaritë e përdoruesve të përfshira në përkufizimin e INSTALLERS User_Alias  mund të ekzekutojnë komandën apt-get. Ne mund ta testojmë këtë me Mary, e cila tani duhet të jetë në gjendje të instalojë softuer.

sudo apt-get install colordiff

Mary është në gjendje të instalojë softuerin sepse ajo është në INSTALLERS User_Alias dhe User_Alias i janë dhënë këto të drejta.

Tre truke të shpejta sudo

Kur harroni të shtoni sudo në një komandë, shkruani

sudo !!

Dhe komanda e fundit do të përsëritet me sudo shtuar në fillim të rreshtit.

Pasi të keni përdorur sudo dhe të keni vërtetuar me fjalëkalimin tuaj, nuk do t'ju duhet të përdorni fjalëkalimin tuaj me komanda të tjera sudo për 15 minuta. Nëse dëshironi që vërtetimi juaj të harrohet menjëherë, përdorni:

sudo -k

A keni menduar ndonjëherë se ku mund të shihni përpjekjet e dështuara të komandës sudo? Ata shkojnë te skedari “/var/log/auth.log”. Mund ta shikoni me:

less /var/log/auth.log

Ne mund të shohim hyrjen për llogarinë e përdoruesit mary, e cila ishte identifikuar në TTY pts/1 kur u përpoq të ekzekutonte komandën shutdown si përdorues root.

Me fuqi të madhe…

…vjen aftësia për të deleguar pjesë të saj te të tjerët. Tani ju e dini se si të fuqizoni përdoruesit e tjerë në mënyrë selektive.