Hadkan perkongsian Samba kepada satu pengguna dan satu alamat VPN
valid users dan hosts allow Samba tidak menjodohkan orang dengan alamat: dua nama perkongsian boleh menyatakan pasangan itu, dan ujian pasangan bersilang membuktikannya.
Dalam reka bentuk ini dua kebenaran berbeza bercampur: siapa boleh menggunakan direktori, dan alamat mana yang boleh bersambung sama sekali. Menulis senarai akaun di sebelah senarai sumber terasa seperti penjodohan, tetapi Samba menilai kedua-dua senarai sebagai predikat yang bebas. Sesiapa yang memenuhi kedua-duanya diterima, dan itu peraturan yang lebih luas daripada yang dimaksudkan oleh kebanyakan pentadbir. Pembetulannya ialah susun atur perkongsian yang berbeza atau lapisan dasar yang boleh menyatakan pasangan itu.
Mitos: dua senarai menjadikan satu peraturan
rujukan smb.conf mentakrifkan valid users dan hosts allow sebagai dua parameter yang tidak berkaitan, dan menetapkan kedua-duanya pada satu perkongsian ialah tempat kekeliruan bermula. Tetapkan valid users = mira, tomas dan hosts allow = 10.77.0.21, 10.77.0.22 dan empat gabungan diterima: Mira dari mana-mana alamat, Tomas dari mana-mana alamat. Tiada apa-apa dalam konfigurasi mengikat nama pertama kepada alamat pertama, dan susunan nama muncul tidak mempunyai makna. Menyusunnya semula, menambah baris hosts allow kedua atau meletakkan satu nama setiap baris tidak mengubah apa-apa. Hasilnya ialah hasil darab dua senarai, bukan pemetaan antaranya.
Apa yang kebanyakan orang mahu sebenarnya lebih sempit: Mira hanya dari satu alamat, Tomas hanya dari alamat lain. Satu takrifan perkongsian tidak mempunyai sintaks untuk ikatan itu, dan tiada susunan pintar menciptanya. Itu satu bentuk dasar yang tidak dinyatakan Samba dalam satu perkongsian, dan di situlah mitos bertahan.
Apa yang Samba nilai, dan dalam susunan apa
Peringkat berjalan dalam susunan tetap, dan susunan yang salah menghasilkan diagnosis yang salah. Klien membuka sambungan; pemeriksaan hos global berjalan jika ada yang dikonfigurasikan; persediaan sesi mengesahkan akaun; kemudian klien bersambung ke perkongsian, di mana senarai hos perkongsian itu sendiri, valid users dan tetapan baca sahaja digunakan; dan hanya apabila fail dibuka, kebenaran sistem fail identiti yang disahkan yang memutuskan. Setiap peringkat boleh menolak permintaan sendiri, dan lulus satu tidak mengatakan apa-apa tentang yang seterusnya. Akibat pentingnya ialah akaun sudah diketahui apabila senarai hos perkongsian dinilai, dan senarai hos masih tiada cara untuk menamakan akaun itu.
Sebab itu perkongsian tidak boleh mengikat satu pengguna kepada satu alamat: hosts allow dan valid users ialah predikat berasingan yang digunakan pada peringkat sambungan pokok yang sama, dan setiap satu menjawab soalnya sendiri. Predikat hos tidak pernah mengambil nama akaun sebagai input, jadi ia tidak boleh ditulis mengikut pengguna. Hanya perkongsian kedua, atau lapisan dasar di luar Samba, boleh menyatakan pasangan itu.
Nilai global penting kerana cara ia diwarisi. Perkongsian yang meninggalkan hosts allow mewarisi nilai global, dan perkongsian yang menetapkan nilainya sendiri menggunakan nilai itu menggantikan nilai global, bukan sebagai tambahan. Jadi senarai global yang luas meluaskan perkongsian yang tidak pernah menetapkan parameter itu, dan tidak melakukan apa-apa kepada perkongsian yang menetapkan nilainya sendiri. Jalankan testparm -s dan baca nilai setiap perkongsian yang dicetaknya, kerana output itulah dasar yang berkesan, bukan fail pada cakera.
Menyempitkan satu perkongsian juga tidak melakukan apa-apa untuk seluruh pelayan. Perkongsian lain, baris gilir pencetak dan sambungan IPC mengekalkan peraturan mereka sendiri, jadi reka bentuk yang bergantung pada senarai alamat satu perkongsian melindungi satu laluan, bukan hos.
Dua nama perkongsian pada satu direktori
Apabila direktori yang sama mesti boleh dicapai oleh dua orang dari dua alamat, dedahkannya dua kali dengan nama berbeza. Setiap blok membawa satu akaun dan satu sumber, yang menjadikan pasangan itu sesuatu yang boleh dikuatkuasakan oleh konfigurasi. Kosnya ialah setiap orang menggunakan nama perkongsian berbeza untuk mencapai fail yang sama, dan itu mesti perubahan yang disengajakan di pihak klien.
[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
Gerbang perkongsian bukan kebenaran sistem fail. Kedua-dua identiti masih memerlukan akses kepada direktori melalui ACL yang mendasari, dan tetapan baca sahaja ialah lapisan kedua, bukan satu-satunya. Beri kebenaran menulis hanya jika aliran kerja memerlukannya, kemudian semak bahawa fail yang dicipta oleh satu identiti kekal boleh digunakan oleh yang lain.
Kedua-dua blok menunjuk ke satu laluan, jadi perubahan pada direktori mempengaruhi kedua-dua perkongsian. Biasanya itulah matlamatnya, tetapi ia juga bermakna kesilapan kebenaran kelihatan kepada kedua-dua pengguna serentak.
Apa yang boleh dibuktikan oleh alamat sumber
Alamat yang dilihat Samba ialah alamat yang sampai ke pelayan, bukan alamat yang klien fikirkan. Gerbang VPN yang menterjemah setiap klien ke satu alamat sumber menghapuskan perbezaan itu: semua klien tiba sebagai hos yang sama dan senarai sumber tidak lagi dapat membezakan mereka. Peruntukan stabil setiap klien dan gerbang yang mengekalkan sumber ialah prasyarat untuk menggunakan alamat sebagai dasar sama sekali. Tanpa kedua-duanya, sekatan mengukur gerbang, bukan pengguna.
Namun begitu, alamat bukan peranti. Dua komputer riba di belakang satu alamat terowong, pajakan yang diperuntukkan semula dan stesen kerja kongsi semuanya menyangkal andaian bahawa sumber mengenal pasti seseorang. Anggap sekatan itu sebagai skop rangkaian dan kekalkan akaun SMB yang disahkan sebagai lapisan identiti, dengan kelayakan peranti seperti sijil jika anda memerlukan kebenaran peranti.
Itulah sebabnya reka bentuk menyekat perkongsian dan bukan pelayan. Pasangan yang ditolak masih boleh membuka sesi, mencapai perkongsian lain atau menyenaraikan pelayan, yang merupakan hasil berbeza daripada kegagalan pengesahan semasa bersambung. Jika keperluannya penolakan sebelum pengesahan, parameter perkongsian Samba ialah alat yang salah.
Buktikan dengan pasangan bersilang
Sahkan konfigurasi, kemudian uji empat gabungan dengan sambungan baharu dan bukan sesi yang diguna semula. Pasangan yang dimaksudkan sepatutnya mencapai direktori, dan kedua-dua pasangan bersilang sepatutnya gagal. Sesi yang dicache daripada ujian terdahulu akan menjawab dengan senang hati untuk gabungan yang salah dan menjadikan peraturan yang rosak kelihatan betul.
testparm -s
smbclient //fileserver/shared-mira -U mira -c 'ls'
smbclient //fileserver/shared-tomas -U tomas -c 'ls'
smbstatus --shares
Pemeriksaan sintaks hanya membuktikan fail itu dihuraikan. Kelayakan, ACL dan keputusan hos dilatih dengan sambungan sebenar, jadi jalankan arahan klien dari alamat yang anda mahu uji dan perhatikan peringkat mana yang menolaknya. Jika pasangan bersilang berjaya, senarai hos berkesan lebih luas daripada yang disyorkan blok, dan testparm -s ialah perkara pertama yang perlu dibaca. Jika pasangan bersilang gagal atas sebab yang salah, akaun atau ACL ialah yang disyaki.
Memantau sesi dengan smbstatus dan mematikannya ialah tindakan respons selepas akses bermula, bukan kawalan kemasukan. Menyekat seluruh alamat yang diperhatikan juga boleh memutuskan pengguna yang tidak berkaitan di belakang NAT yang sama, sebab itu keputusan terletak pada takrifan perkongsian dan pemantauan pada proses respons. Kekalkan kedua-duanya berasingan dan reka bentuk kekal jujur tentang apa yang dikuatkuasakannya.