U ovom dizajnu brkaju se dvije različite dozvole: ko smije koristiti direktorij i koje se adrese uopće smiju povezati. Pisanje liste računa pored liste izvora izgleda kao uparivanje, ali Samba te dvije liste ocjenjuje kao nezavisne predikate. Prima se svako ko zadovolji oboje, što je šire pravilo nego što većina administratora namjerava. Popravka je ili drugačiji raspored dijeljenja ili sloj politike koji može izraziti par.

Mit: dvije liste čine jedno pravilo

Referenca smb.conf definira valid users i hosts allow kao dva nepovezana parametra, i upravo postavljanje oba na jedno dijeljenje je mjesto gdje zabuna počinje. Postavite valid users = mira, tomas i hosts allow = 10.77.0.21, 10.77.0.22 i primaju se četiri kombinacije: Mira s bilo koje adrese, Tomas s bilo koje adrese. Ništa u konfiguraciji ne veže prvo ime s prvom adresom, a redoslijed pojavljivanja imena nema značenja. Njihovo preslagivanje, dodavanje drugog retka hosts allow ili stavljanje jednog imena po retku ne mijenja ništa. Rezultat je proizvod dviju lista, a ne preslikavanje među njima.

Ono što većina ljudi zapravo želi je uže: Mira samo s jedne adrese, Tomas samo s druge. Jedna definicija dijeljenja nema sintaksu za takvo vezivanje i nikakvo pametno slaganje ga ne stvara. To je oblik politike koji Samba ne izražava unutar jednog dijeljenja, i tu mit preživljava.

Šta Samba ocjenjuje i kojim redom

Faze se odvijaju fiksnim redom, a pogrešan red daje pogrešnu dijagnozu. Klijent otvara vezu; globalna provjera hosta izvodi se ako je postavljena; postavljanje sesije autentificira račun; zatim se klijent povezuje s dijeljenjem, gdje se primjenjuju vlastita lista hostova tog dijeljenja, valid users i postavka samo za čitanje; i tek kad se otvori datoteka odlučuju dozvole datotečnog sistema autentificiranog identiteta. Svaka faza može sama odbiti zahtjev, a prolazak kroz jednu ne govori ništa o sljedećoj. Važna posljedica je da je račun poznat već kad se ocjenjuje lista hostova dijeljenja, a lista hostova još uvijek nema način da taj račun imenuje.

Zato dijeljenje ne može vezati jednog korisnika za jednu adresu: hosts allow i valid users su odvojeni predikati koji se primjenjuju u istoj fazi spajanja stabla, a svaki odgovara na svoje pitanje. Predikat hosta nikad ne uzima ime računa kao ulaz, pa se ne može napisati po korisniku. Par može izraziti samo drugo dijeljenje ili sloj politike izvan Sambe.

Globalne vrijednosti su važne zbog načina na koji se nasljeđuju. Dijeljenje koje izostavi hosts allow nasljeđuje globalnu vrijednost, a dijeljenje koje postavi svoju koristi tu vrijednost umjesto globalne, a ne uz nju. Zato široka globalna lista proširuje dijeljenja koja nikad ne postavljaju parametar, a ne čini ništa dijeljenju koje određuje svoju. Pokrenite testparm -s i pročitajte vrijednosti po dijeljenju koje ispisuje, jer je taj izlaz efektivna politika, a datoteka na disku nije.

Sužavanje jednog dijeljenja također ne čini ništa za ostatak servera. Druga dijeljenja, print redovi i IPC veza zadržavaju svoja pravila, pa dizajn koji se oslanja na listu adresa jednog dijeljenja štiti jednu putanju, a ne host.

Dva imena dijeljenja nad jednim direktorijem

Kad isti direktorij mora biti dostupan dvjema osobama s dvije adrese, izložite ga dvaput pod različitim imenima. Svaki blok nosi jedan račun i jedan izvor, što par pretvara u nešto što konfiguracija može provesti. Cijena je da svaka osoba koristi različito ime dijeljenja da dođe do istih datoteka, i to mora biti namjerna promjena na strani klijenta.

[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

Kapija dijeljenja nije dozvola datotečnog sistema. Oba identiteta i dalje trebaju pristup direktoriju kroz osnovni ACL, a postavka samo za čitanje drugi je sloj, a ne jedini. Dajte pravo pisanja samo ako radni tok to zahtijeva, zatim provjerite da datoteke koje stvori jedan identitet ostanu upotrebljive drugom.

Oba bloka pokazuju na jednu putanju, pa promjena u direktoriju utječe na oba dijeljenja. To je obično poanta, ali znači i da je greška u dozvolama vidljiva obama korisnicima odjednom.

Šta izvorna adresa može dokazati

Adresa koju Samba vidi je adresa koja je stigla do servera, a ne adresa za koju klijent misli da je ima. VPN gateway koji svakog klijenta prevodi u jednu izvornu adresu ruši tu razliku: svi klijenti dolaze kao isti host i lista izvora ih više ne može razlikovati. Stabilna dodjela po klijentu i gateway koji čuva izvor preduvjeti su za korištenje adresa kao politike uopće. Bez oba, ograničenje mjeri gateway, a ne korisnika.

Čak i tada, adresa nije uređaj. Dva laptopa iza jedne adrese tunela, dodijeljeni leasing i dijeljena radna stanica zajedno ruše pretpostavku da izvor identifikuje osobu. Tretirajte ograničenje kao mrežni obuhvat i držite autentificirane SMB račune kao sloj identiteta, s vjerodajnicom uređaja kao što je certifikat ako vam treba autorizacija uređaja.

Zato dizajn ograničava dijeljenja, a ne server. Odbijeni par ipak može otvoriti sesiju, doći do drugog dijeljenja ili izlistati server, što je drugačiji ishod od neuspjeha autentifikacije pri povezivanju. Ako je zahtjev odbijanje prije autentifikacije, Samba parametri dijeljenja su pogrešan alat.

Dokažite to ukrštenim parovima

Provjerite konfiguraciju, zatim testirajte četiri kombinacije svježim vezama, a ne ponovno korištenom sesijom. Namjeravani par treba doći do direktorija, a oba ukrštena para trebaju pasti. Keširana sesija iz ranijeg testa rado će odgovoriti za pogrešnu kombinaciju i učiniti da pokvareno pravilo izgleda ispravno.

testparm -s
smbclient //fileserver/shared-mira -U mira -c 'ls'
smbclient //fileserver/shared-tomas -U tomas -c 'ls'
smbstatus --shares

Provjera sintakse dokazuje samo da se datoteka parsira. Vjerodajnice, ACL-ovi i odluka o hostu uvježbavaju se stvarnom vezom, zato pokrenite klijentsku naredbu s adrese koju želite testirati i gledajte koja faza je odbija. Ako ukršteni par uspije, efektivna lista hostova šira je nego što blok sugerira, a testparm -s je prvo što treba pročitati. Ako ukršteni par padne zbog pogrešnog razloga, sumnjivci su račun ili ACL.

Praćenje sesija pomoću smbstatus i njihovo ubijanje radnja je odgovora nakon što je pristup počeo, a ne kontrola prijema. Blokiranje cijele promatrane adrese može i odspojiti nepovezane korisnike iza istog NAT-a, zato odluka pripada definiciji dijeljenja, a praćenje procesu odgovora. Držite to dvoje odvojeno i dizajn ostaje iskren o tome što provodi.

Povezani članci