Šajā dizainā sajaucas divas dažādas atļaujas: kas drīkst izmantot direktoriju un kuras adreses vispār drīkst pieslēgties. Kontu saraksta rakstīšana blakus avotu sarakstam šķiet kā pāru veidošana, bet Samba abus sarakstus vērtē kā neatkarīgus predikātus. Tiek pieņemts ikviens, kas izpilda abus, un tas ir plašāks noteikums, nekā vairums administratoru domā. Risinājums ir vai nu cits koplietojuma izkārtojums, vai politikas slānis, kas spēj izteikt pāri.

Mīts: divi saraksti veido vienu noteikumu

smb.conf uzziņa definē valid users un hosts allow kā divus nesaistītus parametrus, un tieši abu iestatīšana vienā koplietojumā ir vieta, kur sākas apjukums. Iestatiet valid users = mira, tomas un hosts allow = 10.77.0.21, 10.77.0.22, un tiek pieņemtas četras kombinācijas: Mira no jebkuras no abām adresēm, Tomas no jebkuras no abām adresēm. Nekas konfigurācijā nesaista pirmo vārdu ar pirmo adresi, un vārdu parādīšanās secībai nav nozīmes. To pārkārtošana, otras hosts allow rindas pievienošana vai viena vārda ievietošana rindā neko nemaina. Rezultāts ir divu sarakstu reizinājums, nevis attēlojums starp tiem.

Tas, ko vairums cilvēku patiešām vēlas, ir šaurāk: Mira tikai no vienas adreses, Tomas tikai no otras. Vienai koplietojuma definīcijai nav sintakses šim saistījumam, un nekāda gudra secība to neizveido. Tā ir politikas forma, ko Samba vienā koplietojumā neizsaka, un tur mīts turpina dzīvot.

Ko Samba vērtē un kādā secībā

Posmi norit fiksētā secībā, un nepareiza secība dod nepareizu diagnozi. Klients atver savienojumu; globāla hosta pārbaude tiek izpildīta, ja tāda ir konfigurēta; sesijas iestatīšana autentificē kontu; pēc tam klients pieslēdzas koplietojumam, kur tiek piemērots tā paša koplietojuma hostu saraksts, valid users un tikai lasīšanas iestatījums; un tikai tad, kad tiek atvērts fails, izšķir autentificētās identitātes failu sistēmas atļaujas. Katrs posms var pats noraidīt pieprasījumu, un viena iziešana neko nepasaka par nākamo. Svarīgākās sekas: konts ir zināms jau tad, kad tiek vērtēts koplietojuma hostu saraksts, un hostu sarakstam joprojām nav veida, kā šo kontu nosaukt.

Tāpēc koplietojums nevar saistīt vienu lietotāju ar vienu adresi: hosts allow un valid users ir atsevišķi predikāti, kas tiek piemēroti tajā pašā koka savienojuma posmā, un katrs atbild uz savu jautājumu. Hosta predikāts nekad neņem konta vārdu kā ievadi, tāpēc to nevar uzrakstīt katram lietotājam. Pāri var izteikt tikai otrs koplietojums vai politikas slānis ārpus Samba.

Globālās vērtības ir svarīgas mantojuma dēļ. Koplietojums, kas izlaiž hosts allow, manto globālo vērtību, un koplietojums, kas iestata savu, izmanto šo vērtību globālās vietā, nevis papildus. Tāpēc plašs globālais saraksts paplašina koplietojumus, kas nekad neiestata parametru, un neko nedara koplietojumam, kas definē savu. Palaidiet testparm -s un lasiet izdrukātās vērtības katram koplietojumam, jo šī izvade ir efektīvā politika, bet fails diskā nav.

Viena koplietojuma sašaurināšana arī neko nedara pārējam serverim. Citi koplietojumi, drukāšanas rindas un IPC savienojums saglabā savus noteikumus, tāpēc dizains, kas balstās uz viena koplietojuma adrešu sarakstu, aizsargā vienu ceļu, nevis hostu.

Divi koplietojuma nosaukumi vienā direktorijā

Kad viena un tā pati direktorija ir jāsasniedz diviem cilvēkiem no divām adresēm, atklājiet to divreiz ar dažādiem nosaukumiem. Katrs bloks nes vienu kontu un vienu avotu, kas pāri pārvērš par kaut ko, ko konfigurācija var piespiest. Cena ir tā, ka katrs cilvēks izmanto citu koplietojuma nosaukumu, lai sasniegtu tos pašus failus, un tam jābūt apzinātai izmaiņai klienta pusē.

[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

Koplietojuma vārti nav failu sistēmas atļauja. Abām identitātēm joprojām ir nepieciešama piekļuve direktorijai caur pamata ACL, un tikai lasīšanas iestatījums ir otrs slānis, nevis vienīgais. Dodiet rakstīšanas piekļuvi tikai tad, ja to prasa darbplūsma, un pēc tam pārbaudiet, vai vienas identitātes izveidotie faili paliek izmantojami otrai.

Abi bloki norāda uz vienu ceļu, tāpēc direktorijas izmaiņas ietekmē abus koplietojumus. Parasti tas ir mērķis, bet tas nozīmē arī to, ka atļauju kļūda ir redzama abiem lietotājiem vienlaikus.

Ko var pierādīt avota adrese

Adrese, ko redz Samba, ir adrese, kas sasniedza serveri, nevis tā, kas klientam, viņaprāt, ir. VPN vārteja, kas pārvērš katru klientu vienā avota adresē, šo atšķirību novērš: visi klienti ierodas kā viens un tas pats hosts, un avotu saraksts tos vairs nevar atšķirt. Stabils sadalījums katram klientam un vārteja, kas saglabā avotu, ir priekšnosacījumi adrešu izmantošanai kā politikai vispār. Bez abiem ierobežojums mēra vārteju, nevis lietotāju.

Pat tad adrese nav ierīce. Divi klēpjdatori aiz vienas tuneļa adreses, pārdalīta nomāšana un koplietota darbstacija kopā apgāž pieņēmumu, ka avots identificē cilvēku. Uztveriet ierobežojumu kā tīkla apjomu un turiet autentificētus SMB kontus kā identitātes slāni, ar ierīces akreditācijas datiem, piemēram, sertifikātu, ja nepieciešama ierīces autorizācija.

Tāpēc dizains aizver koplietojumus, nevis serveri. Noraidīts pāris joprojām var atvērt sesiju, sasniegt citu koplietojumu vai uzskaitīt serveri, un tas ir cits iznākums nekā autentifikācijas kļūda savienošanās laikā. Ja prasība ir noraidīt pirms autentifikācijas, Samba koplietojuma parametri ir nepareizais instruments.

Pierādiet to ar krustotiem pāriem

Validējiet konfigurāciju, pēc tam pārbaudiet četras kombinācijas ar svaigiem savienojumiem, nevis atkārtoti izmantotu sesiju. Paredzētajam pārim jāsasniedz direktorija, un abiem krustotajiem pāriem jācieš neveiksme. Kešatmiņā saglabāta sesija no iepriekšēja testa labprāt atbildēs par nepareizo kombināciju un liks salauztam noteikumam izskatīties pareizam.

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

Sintakses pārbaude pierāda tikai to, ka fails tiek parsēts. Pieteikšanās dati, ACL un hosta lēmums tiek pārbaudīti ar īstu savienojumu, tāpēc palaidiet klienta komandu no adreses, kuru vēlaties pārbaudīt, un vērojiet, kurš posms to noraida. Ja krustotais pāris izdodas, efektīvais hostu saraksts ir plašāks, nekā norāda bloks, un testparm -s ir pirmā lieta, kas jāizlasa. Ja krustotais pāris neizdodas nepareiza iemesla dēļ, aizdomās turamais ir konts vai ACL.

Sesiju uzraudzība ar smbstatus un to nogalināšana ir reakcijas darbība pēc piekļuves sākuma, nevis uzņemšanas kontrole. Visas novērotās adreses bloķēšana var arī atvienot nesaistītus lietotājus aiz tā paša NAT, tāpēc lēmums pieder koplietojuma definīcijai, bet uzraudzība – reakcijas procesam. Turiet abus atsevišķi, un dizains paliek godīgs par to, ko tas piespiež.

Saistītie raksti