Бұл дизайнда екі түрлі рұқсат шатасады: кім каталогты пайдалана алады және қандай мекенжайлар тіркесуге болады. Тіркелгілер тізімін көздер тізімінің жанына жазу жұптастыру сияқты көрінеді, бірақ Samba екі тізімді тәуелсіз предикаттар ретінде бағалайды. Екеуін де қанағаттандыратын кез келген адам қабылданады, бұл көптеген әкімшілер ойлағаннан кеңірек ереже. Шешім – басқа ортақ ресурс құрылымы немесе жұпты білдіре алатын саясат қабаты.

Аңыз: екі тізім бір ереже жасайды

smb.conf анықтамасы valid users және hosts allow параметрлерін өзара байланысы жоқ екі параметр ретінде анықтайды, және екеуін бір ортақ ресурсқа қою шатасудың басы. valid users = mira, tomas және hosts allow = 10.77.0.21, 10.77.0.22 орнатыңыз, сонда төрт комбинация қабылданады: Мира кез келген мекенжайдан, Томас кез келген мекенжайдан. Конфигурацияда ешнәрсе бірінші атауды бірінші мекенжайға байланыстырмайды, ал атаулардың пайда болу реті ешбір мағынаға ие емес. Оларды қайта реттеу, екінші hosts allow жолын қосу немесе әр жолға бір атау қою ешнәрсені өзгертпейді. Нәтиже – екі тізімнің туындысы, олардың арасындағы бейнелеу емес.

Көптеген адамдар шын мәнінде қалайтын нәрсе тар: Мира тек бір мекенжайдан, Томас тек екіншісінен. Бір ортақ ресурс анықтамасында бұл байланысқа синтаксис жоқ, және ешқандай ақылды реттеу оны жасамайды. Бұл Samba бір ортақ ресурс ішінде білдірмейтін саясат пішіні, және аңыз сонда өмір сүреді.

Samba нені және қандай ретпен бағалайды

Кезеңдер қатты ретпен жүреді, ал қате рет қате диагноз береді. Клиент байланыс ашады; конфигурацияланған болса, ғаламдық хост тексерісі жүреді; сессияны орнату тіркелгіні аутентификациялайды; содан кейін клиент ортақ ресурсқа қосылады, онда сол ресурстың өз хост тізімі, valid users және тек оқу режимі қолданылады; және файл ашылғанда ғана аутентификацияланған тұлғаның файлдық жүйе рұқсаттары шешеді. Әр кезең сұранысты өзі қабылдамай алады, және біреуінен өту келесісі туралы ештеңе айтпайды. Маңызды салдар: тіркелгі ортақ ресурстың хост тізімі бағаланғанға дейін белгілі, ал хост тізімінің сол тіркелгіні атау мүмкіндігі әлі жоқ.

Сондықтан ортақ ресурс бір пайдаланушыны бір мекенжайға байланыстыра алмайды: hosts allow және valid users бір ағаш-қосылу кезеңінде қолданылатын жеке предикаттар, және әрқайсысы өз сұрағына жауап береді. Хост предикаты тіркелгі атауын кіріс ретінде ешқашан қабылдамайды, сондықтан оны әр пайдаланушы үшін жазу мүмкін емес. Жұпты тек екінші ортақ ресурс немесе Samba сыртындағы саясат қабаты білдіре алады.

Ғаламдық мәндер мұрагерлік жолына байланысты маңызды. hosts allow параметрін өткізіп жіберген ортақ ресурс ғаламдық мәнді мұра етеді, ал өзінікін орнатқан ортақ ресурс сол мәнді ғаламдықтың орнына пайдаланады, оған қосымша емес. Сондықтан кең ғаламдық тізім параметрді ешқашан орнатпайтын ортақ ресурстарды кеңейтеді, ал өзінікін анықтайтын ортақ ресурсқа ештеңе жасамайды. testparm -s іске қосып, оның шығаратын әр ресурс бойынша мәндерін оқыңыз, өйткені сол шығыс – тиімді саясат, ал дискідегі файл олай емес.

Бір ортақ ресурсты тарылту сервердің қалғанына да ештеңе жасамайды. Басқа ортақ ресурстар, принтер кезектері және IPC байланысы өз ережелерін сақтайды, сондықтан бір ресурстың мекенжай тізіміне сүйенетін дизайн бір жолды қорғайды, хостты емес.

Бір каталог үстінде екі ортақ ресурс атауы

Бір каталог екі адамға екі мекенжайдан қолжетімді болуы керек болса, оны әртүрлі атаулармен екі рет көрсетіңіз. Әр блок бір тіркелгі мен бір көзді алып жүреді, бұл жұпты конфигурация орындай алатын нәрсеге айналдырады. Бағасы – әр адам сол файлдарға жету үшін басқа ортақ ресурс атауын пайдаланады, және бұл клиент жағындағы әдейі өзгеріс болуы керек.

[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

Ортақ ресурс қақпасы файлдық жүйе рұқсаты емес. Екі тұлға да каталогқа негізгі ACL арқылы қол жеткізуге мұқтаж, ал тек оқу режимі екінші қабат, жалғыз емес. Жазу рұқсатын жұмыс ағыны талап етсе ғана беріңіз, содан кейін бір тұлға жасаған файлдардың екіншісі үшін жарамды болып қалатынын тексеріңіз.

Екі блок бір жолды нұсқайды, сондықтан каталогтағы өзгеріс екі ортақ ресурсқа да әсер етеді. Әдетте бұл – мақсат, бірақ бұл рұқсат қатесі екі пайдаланушыға бір мезгілде көрінетінін де білдіреді.

Көз мекенжайы нені дәлелдей алады

Samba көретін мекенжай – серверге жеткен мекенжай, клиент өзінде бар деп ойлайтын мекенжай емес. Әр клиентті бір көз мекенжайына аударатын VPN шлюзі бұл айырманы жояды: барлық клиенттер бір хост ретінде келеді және көздер тізімі оларды енді ажырата алмайды. Клиентке тұрақты бөлу және көзді сақтайтын шлюз мекенжайларды саясат ретінде пайдаланудың алғышарттары. Екеуі де болмаса, шектеу пайдаланушыны емес, шлюзді өлшейді.

Сонда да мекенжай құрылғы емес. Бір туннель мекенжайының артындағы екі ноутбук, қайта бөлінген жалдау және ортақ жұмыс станциясы көз адамды сәйкестендіреді деген болжамды бірге жоққа шығарады. Шектеуді желілік ауқым ретінде қарастырыңыз және аутентификацияланған SMB тіркелгілерін сәйкестік қабаты ретінде ұстаңыз, құрылғыны авторизациялау қажет болса, сертификат сияқты құрылғы куәлігімен.

Сондықтан дизайн серверді емес, ортақ ресурстарды қоршайды. Қабылданбаған жұп бәрібір сессия ашып, басқа ортақ ресурсқа жетіп немесе серверді тізімдей алады, бұл қосылу кезіндегі аутентификация сәтсіздігінен өзгеше нәтиже. Егер талап аутентификацияға дейін қабылдамау болса, Samba-ның ортақ ресурс параметрлері дұрыс құрал емес.

Айқас жұптармен дәлелдеңіз

Конфигурацияны валидациялаңыз, содан кейін төрт комбинацияны қайта пайдаланылған сессиямен емес, жаңа байланыстармен сынаңыз. Көзделген жұп каталогқа жетуі керек, ал екі айқас жұп та сәтсіз болуы керек. Бұрынғы тесттің кэштелген сессиясы қате комбинацияға ризашылықпен жауап береді және сынған ережені дұрыс көрсетеді.

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

Синтаксис тексеруі файлдың талданатынын ғана дәлелдейді. Тіркелу деректері, ACL-дар және хост шешімі нақты байланыспен сыналады, сондықтан клиент командасын тексеретін мекенжайдан іске қосып, қай кезең оны қабылдамайтынын бақылаңыз. Айқас жұп сәтті болса, тиімді хост тізімі блок көрсеткеннен кеңірек, ал testparm -s бірінші оқылатын нәрсе. Айқас жұп дұрыс емес себептен сәтсіз болса, күдікті – тіркелгі немесе ACL.

Сессияларды smbstatus арқылы бақылау және оларды тоқтату – қолжетімділік басталғаннан кейінгі жауап әрекеті, кіру бақылауы емес. Бақыланған бүкіл мекенжайды бұғаттау сол NAT-тың артындағы қатысы жоқ пайдаланушыларды да ажыратуы мүмкін, сондықтан шешім ортақ ресурс анықтамасына, ал мониторинг жауап процесіне тиесілі. Екеуін бөлек ұстаңыз, дизайн өзінің нені орындайтыны туралы адал болып қалады.

Қатысты мақалалар