Kufizoni një ndarje Samba në një përdorues dhe një adresë VPN
Parametrat valid users dhe hosts allow të Samba nuk e çiftojnë një person me një adresë: dy emra ndarjeje mund ta shprehin çiftin, dhe provat me çifte të kryqëzuara e dëshmojnë.
Në këtë projekt ngatërrohen dy leje të ndryshme: kush mund të përdorë një drejtori dhe cilat adresa mund të lidhen fare. Të shkruash një listë llogarish pranë një liste burimesh duket si çiftim, por Samba i vlerëson të dyja listat si kallëzues të pavarur. Pranon kushdo që plotëson të dyja, dhe ky është një rregull më i gjerë nga sa synojnë shumica e administratorëve. Rregullimi është ose një plan tjetër ndarjeje ose një shtresë politike që mund ta shprehë çiftin.
Miti: dy lista bëjnë një rregull
Referenca e smb.conf i përcakton valid users dhe hosts allow si dy parametra të palidhur, dhe pikërisht vendosja e të dyjave në një ndarje është vendi ku fillon konfuzioni. Vendos valid users = mira, tomas dhe hosts allow = 10.77.0.21, 10.77.0.22 dhe pranohen katër kombinime: Mira nga secila prej dy adresave, Tomas nga secila prej dy adresave. Asgjë në konfigurim nuk e lidh emrin e parë me adresën e parë, dhe rendi në të cilin shfaqen emrat nuk ka kuptim. Riradhitja e tyre, shtimi i një rreshti të dytë hosts allow ose vendosja e një emri për rresht nuk ndryshon asgjë. Rezultati është prodhimi i dy listave, jo një pasqyrim midis tyre.
Ajo që shumica duan në të vërtetë është më e ngushtë: Mira vetëm nga një adresë, Tomas vetëm nga një tjetër. Një përkufizim i vetëm ndarjeje nuk ka sintaksë për atë lidhje, dhe asnjë rend i zgjuar nuk e krijon atë. Kjo është një formë politike që Samba nuk e shpreh brenda një ndarjeje, dhe atje miti mbijeton.
Çfarë vlerëson Samba, dhe në çfarë rendi
Fazat ecin në një rend fiks, dhe rendi i gabuar jep diagnozën e gabuar. Një klient hap një lidhje; një kontroll global i host-it ekzekutohet nëse është konfiguruar; konfigurimi i sesionit vërteton llogarinë; pastaj klienti lidhet me një ndarje, ku aplikohen lista e saj e host-ve, valid users dhe cilësimi vetëm-lexim; dhe vetëm kur hapet një skedar vendosin lejet e sistemit të skedarëve të identitetit të vërtetuar. Çdo fazë mund ta refuzojë kërkesën vetë, dhe kalimi i njërës nuk thotë asgjë për tjetrën. Pasoja e rëndësishme është se llogaria njihet kur vlerësohet lista e host-ve e ndarjes, dhe lista e host-ve ende nuk ka mënyrë ta emërtojë atë llogari.
Prandaj një ndarje nuk mund ta lidhë një përdorues me një adresë: hosts allow dhe valid users janë kallëzues të veçantë që aplikohen në të njëjtën fazë të lidhjes së pemës, dhe secili përgjigjet pyetjes së vet. Kallëzuesi i host-it nuk e merr kurrë emrin e llogarisë si hyrje, pra nuk mund të shkruhet për përdorues. Çiftin mund ta shprehë vetëm një ndarje e dytë ose një shtresë politike jashtë Samba.
Vlerat globale kanë rëndësi për shkak të mënyrës se si trashëgohen. Një ndarje që heq hosts allow trashëgon vlerën globale, dhe një ndarje që vendos të vetën përdor atë vlerë në vend të asaj globale, jo përveç saj. Prandaj një listë globale e gjerë zgjeron ndarjet që nuk e vendosin kurrë parametrin, dhe nuk bën asgjë për një ndarje që përcakton të vetën. Ekzekuto testparm -s dhe lexo vlerat për secilën ndarje që printon, sepse ai dalje është politika efektive, dhe skedari në disk nuk është.
Ngushtimi i një ndarjeje gjithashtu nuk bën asgjë për pjesën tjetër të serverit. Ndarjet e tjera, radhët e printimit dhe lidhja IPC mbajnë rregullat e tyre, kështu që një projekt që mbështetet në listën e adresave të një ndarjeje mbron një rrugë, jo host-in.
Dy emra ndarjeje mbi një drejtori
Kur e njëjta drejtori duhet të jetë e arritshme nga dy persona nga dy adresa, ekspozoje dy herë me emra të ndryshëm. Çdo bllok mbart një llogari dhe një burim, gjë që e kthen çiftin në diçka që konfigurimi mund ta imponojë. Kostoja është që secili person përdor një emër tjetër ndarjeje për të arritur të njëjtat skedarë, dhe kjo duhet të jetë një ndryshim i qëllimshëm në anën e klientit.
[shared-mira]
path = /srv/shared
guest ok = no
read only = yes
valid users = mira
hosts allow = 10.77.0.21
hosts deny = ALL
[shared-tomas]
path = /srv/shared
guest ok = no
read only = yes
valid users = tomas
hosts allow = 10.77.0.22
hosts deny = ALL
Porta e ndarjes nuk është leje e sistemit të skedarëve. Të dy identitetet ende kanë nevojë për akses në drejtori përmes ACL-së bazë, dhe cilësimi vetëm-lexim është një shtresë e dytë, jo e vetmja. Jep leje shkrimi vetëm nëse e kërkon rrjedha e punës, pastaj kontrollo që skedarët e krijuar nga një identitet mbeten të përdorshëm për tjetrin.
Të dy blloqet tregojnë një rrugë të vetme, kështu që një ndryshim në drejtori prek të dyja ndarjet. Zakonisht ky është qëllimi, por do të thotë gjithashtu që një gabim lejeje shihet nga të dy përdoruesit njëkohësisht.
Çfarë mund të dëshmojë adresa e burimit
Adresa që sheh Samba është adresa që arriti në server, jo adresa që klienti mendon se ka. Një portë VPN që përkthen çdo klient në një adresë të vetme burimi e zhduk dallimin: të gjithë klientët vijnë si i njëjti host dhe lista e burimeve nuk mund t'i dallojë më. Një caktim i qëndrueshëm për çdo klient dhe një portë që e ruan burimin janë parakushte për përdorimin e adresave si politikë fare. Pa të dyja, kufizimi mat portën dhe jo përdoruesin.
Edhe atëherë, adresa nuk është pajisje. Dy laptopë pas një adrese tuneli, një qira e rishpërndarë dhe një stacion pune i përbashkët e hedhin poshtë të gjitha supozimin se burimi identifikon një person. Trajto kufizimin si shtrirje rrjeti dhe mbaj llogaritë SMB të vërtetuara si shtresën e identitetit, me kredencial pajisjeje si një certifikatë nëse të duhet autorizim pajisjeje.
Prandaj projekti mbyll ndarjet dhe jo serverin. Një çift i refuzuar ende mund të hapë një sesion, të arrijë një ndarje tjetër ose të listojë serverin, që është një rezultat i ndryshëm nga një dështim vërtetimi në lidhje. Nëse kërkesa është refuzimi para vërtetimit, parametrat e ndarjes të Samba janë mjeti i gabuar.
Dëshmoje me çifte të kryqëzuara
Vërteto konfigurimin, pastaj provo katër kombinimet me lidhje të reja dhe jo me një sesion të ripërdorur. Çifti i synuar duhet të arrijë drejtorinë, dhe të dy çiftet e kryqëzuara duhet të dështojnë. Një sesion i ruajtur nga një provë e mëparshme do të përgjigjet me kënaqësi për kombinimin e gabuar dhe do ta bëjë një rregull të prishur të duket i saktë.
testparm -s
smbclient //fileserver/shared-mira -U mira -c 'ls'
smbclient //fileserver/shared-tomas -U tomas -c 'ls'
smbstatus --shares
Një kontroll sintakse dëshmon vetëm se skedari analizohet. Kredencialet, ACL-të dhe vendimi i host-it ushtrohen nga një lidhje e vërtetë, prandaj ekzekuto komandën e klientit nga adresa që do të provosh dhe vëzhgo cila fazë e refuzon. Nëse një çift i kryqëzuar ka sukses, lista efektive e host-ve është më e gjerë nga sa sugjeron blloku, dhe testparm -s është gjëja e parë që duhet lexuar. Nëse një çift i kryqëzuar dështon për arsyen e gabuar, të dyshuarit janë llogaria ose ACL-ja.
Monitorimi i sesioneve me smbstatus dhe ndërprerja e tyre është një veprim reagimi pas fillimit të aksesit, jo kontroll pranimi. Bllokimi i një adrese të tërë të vëzhguar mund të shkëpusë edhe përdorues të palidhur pas të njëjtit NAT, prandaj vendimi i përket përkufizimit të ndarjes dhe monitorimi procesit të reagimit. Mbaji të dyja të ndara dhe projekti mbetet i sinqertë për atë që imponon.