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ërdoruesitmary
.- 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.