Bu tasarımda iki farklı izin karıştırılır: kimin bir dizini kullanabileceği ve hangi adreslerin bağlanabileceği. Hesap listesini kaynak listesinin yanına yazmak eşleştirme gibi görünür, ancak Samba iki listeyi bağımsız yüklemler olarak değerlendirir. İkisini de karşılayan herkes kabul edilir ve bu, çoğu yöneticinin amaçladığından daha geniş bir kuraldır. Çözüm ya farklı bir paylaşım düzeni ya da çifti ifade edebilen bir ilke katmanıdır.

Mit: iki liste tek bir kural oluşturur

smb.conf başvurusu valid users ve hosts allow parametrelerini birbiriyle ilgisiz iki parametre olarak tanımlar ve karışıklık, ikisinin de tek bir paylaşımda ayarlanmasıyla başlar. valid users = mira, tomas ve hosts allow = 10.77.0.21, 10.77.0.22 ayarlandığında dört bileşim kabul edilir: Mira iki adresin herhangi birinden, Tomas iki adresin herhangi birinden. Yapılandırmada hiçbir şey ilk adı ilk adrese bağlamaz ve adların görünme sırasının bir anlamı yoktur. Bunları yeniden sıralamak, ikinci bir hosts allow satırı eklemek veya satır başına bir ad koymak hiçbir şeyi değiştirmez. Sonuç iki listenin çarpımıdır, aralarında bir eşleme değildir.

Çoğu insanın gerçekte istediği daha dardır: Mira yalnızca bir adresten, Tomas yalnızca başka bir adresten. Tek bir paylaşım tanımının bu bağlama için sözdizimi yoktur ve hiçbir kurnaz sıralama onu oluşturmaz. Bu, Samba'nın tek bir paylaşım içinde ifade etmediği bir ilke biçimidir ve mit tam orada yaşamaya devam eder.

Samba neyi ve hangi sırayla değerlendirir

Aşamalar sabit bir sırayla ilerler ve yanlış sıra yanlış tanı verir. Bir istemci bağlantı açar; yapılandırılmışsa genel ana makine denetimi çalışır; oturum kurulumu hesabı doğrular; ardından istemci bir paylaşıma bağlanır ve orada o paylaşımın kendi ana makine listesi, valid users ve salt okunur ayarı uygulanır; ve ancak bir dosya açıldığında doğrulanmış kimliğin dosya sistemi izinleri karar verir. Her aşama isteği tek başına reddedebilir ve birini geçmek sonrakine dair hiçbir şey söylemez. Önemli sonuç, paylaşımın ana makine listesi değerlendirildiğinde hesabın zaten biliniyor olmasıdır ve ana makine listesinin o hesabı adlandırma yolu hâlâ yoktur.

Bu yüzden bir paylaşım tek bir kullanıcıyı tek bir adrese bağlayamaz: hosts allow ve valid users aynı ağaç bağlantı aşamasında uygulanan ayrı yüklemlerdir ve her biri kendi sorusunu yanıtlar. Ana makine yüklemi hesap adını hiçbir zaman girdi olarak almaz, bu nedenle kullanıcı başına yazılamaz. Çifti yalnızca ikinci bir paylaşım veya Samba dışındaki bir ilke katmanı ifade edebilir.

Genel değerler, miras alınma biçimleri nedeniyle önemlidir. hosts allow parametresini atlayan paylaşım genel değeri miras alır ve kendi değerini ayarlayan paylaşım o değeri genel değerin yerine kullanır, ona ek olarak değil. Böylece geniş bir genel liste, parametreyi hiçbir zaman ayarlamayan paylaşımları genişletir ve kendi değerini tanımlayan paylaşıma hiçbir şey yapmaz. testparm -s komutunu çalıştırın ve yazdırdığı paylaşım başına değerleri okuyun, çünkü o çıktı etkili ilkedir; diskteki dosya değildir.

Bir paylaşımı daraltmak da sunucunun geri kalanı için hiçbir şey yapmaz. Diğer paylaşımlar, yazıcı kuyrukları ve IPC bağlantısı kendi kurallarını korur, bu nedenle tek bir paylaşımın adres listesine dayanan tasarım ana makineyi değil tek bir yolu korur.

Tek bir dizin üzerinde iki paylaşım adı

Aynı dizine iki kişinin iki adresten erişebilmesi gerektiğinde, onu farklı adlarla iki kez açığa çıkarın. Her blok bir hesap ve bir kaynak taşır, bu da çifti yapılandırmanın zorlayabileceği bir şeye dönüştürür. Bedeli, her kişinin aynı dosyalara ulaşmak için farklı bir paylaşım adı kullanmasıdır ve bu, istemci tarafında bilinçli bir değişiklik olmalıdır.

[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

Paylaşım kapısı bir dosya sistemi izni değildir. Her iki kimliğin de alttaki ACL üzerinden dizine erişmesi gerekir ve salt okunur ayarı ikinci bir katmandır, tek katman değil. Yazma iznini yalnızca iş akışı gerektiriyorsa verin, sonra bir kimliğin oluşturduğu dosyaların diğeri için kullanılabilir kaldığını denetleyin.

Her iki blok da tek bir yola işaret eder, bu nedenle dizindeki bir değişiklik iki paylaşımı da etkiler. Genellikle amaç budur, ama aynı zamanda bir izin hatasının iki kullanıcı tarafından aynı anda görüldüğü anlamına gelir.

Kaynak adres neyi kanıtlayabilir

Samba'nın gördüğü adres sunucuya ulaşan adrestir, istemcinin sahip olduğunu sandığı adres değildir. Her istemciyi tek bir kaynak adrese çeviren bir VPN ağ geçidi bu ayrımı ortadan kaldırır: tüm istemciler aynı ana makine olarak gelir ve kaynak listesi artık onları ayırt edemez. İstemci başına kararlı atama ve kaynağı koruyan bir ağ geçidi, adresleri ilke olarak kullanmanın ön koşullarıdır. İkisi de yoksa kısıtlama kullanıcıyı değil ağ geçidini ölçer.

Yine de adres bir aygıt değildir. Tek bir tünel adresinin arkasındaki iki dizüstü bilgisayar, yeniden atanmış bir kiralama ve paylaşılan bir iş istasyonu, bir kaynağın kişiyi tanımladığı varsayımını birlikte çürütür. Kısıtlamayı ağ kapsamı olarak ele alın ve doğrulanmış SMB hesaplarını kimlik katmanı olarak koruyun, aygıt yetkilendirmesi gerekiyorsa sertifika gibi bir aygıt kimlik bilgisiyle.

Bu nedenle tasarım sunucuyu değil paylaşımları kapatır. Reddedilen bir çift yine de oturum açabilir, başka bir paylaşıma ulaşabilir veya sunucuyu listeleyebilir; bu, bağlantı sırasındaki bir kimlik doğrulama hatasından farklı bir sonuçtur. Gereksinim kimlik doğrulamadan önce reddetmekse, Samba'nın paylaşım parametreleri yanlış araçtır.

Çapraz çiftlerle kanıtlayın

Yapılandırmayı doğrulayın, ardından dört bileşimi yeniden kullanılmış bir oturum yerine yeni bağlantılarla sınayın. Amaçlanan çift dizine ulaşmalı ve iki çapraz çift de başarısız olmalıdır. Önceki bir testten önbelleğe alınmış oturum, yanlış bileşim için memnuniyetle yanıt verir ve bozuk bir kuralı doğru gibi gösterir.

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

Sözdizimi denetimi yalnızca dosyanın ayrıştırıldığını kanıtlar. Kimlik bilgileri, ACL'ler ve ana makine kararı gerçek bir bağlantıyla sınanır, bu nedenle istemci komutunu sınamak istediğiniz adresten çalıştırın ve hangi aşamanın onu reddettiğini izleyin. Çapraz çift başarılı olursa, etkili ana makine listesi bloğun ima ettiğinden daha geniştir ve testparm -s ilk okunması gereken şeydir. Çapraz çift yanlış nedenle başarısız olursa şüpheli hesap veya ACL'dir.

Oturumları smbstatus ile izlemek ve sonlandırmak, erişim başladıktan sonra verilen bir yanıt eylemidir, erişim denetimi değil. Gözlenen bir adresin tamamını engellemek aynı NAT'ın arkasındaki ilgisiz kullanıcıları da bağlantıdan düşürebilir, bu nedenle karar paylaşım tanımına, izleme ise yanıt sürecine aittir. İkisini ayrı tutun ve tasarım neyi zorladığı konusunda dürüst kalır.

İlgili makaleler