Samba'nın paylaşılan yolun dışındaki bağlantıyı takip etmesini nasıl sağlarsınız?


61

Bu, Ubuntu sunucusu 10.04 64 ve samba 3.4.7'dir.

Paylaşılan bir dizine /home/mit/shareve paylaşılana /home/tempbağladığım bir tane daha var:

ln -s /home/temp /home/mit/share/temp

Ancak pencerelerde, interneti kullandıktan sonra açamıyorum S:/temp, fakat Linux'ta /home/mit/share/tempbeklendiği gibi erişmek mümkün .

Bu, eğer içerideki dizinleri bağlarsam çalışır /home/mit/share/temp, bu yüzden samba, paylaşılan dizinin dışına / üstüne bir bağlantı atlamakla sınırlıdır.

DÜZENLE:

Ayrıca Ubuntu + en son samba sürümü başlıklı bu soruya bakın , sembolik bağlantılar artık Windows'ta paylaşılan paylaşım üzerinde çalışmaz .

unix extensions = noKüresel bölüme follow symlinks = yesve wide links = yessadece gerçekten ihtiyaç duyduğunuz paylar bölümüne girmek en iyisidir .

unix extensionBayrak küresel bölümde ve tek tek hisse bölümlerde yaşamak zorundadır. Ancak güvenlik nedeniyle diğer seçenekleri sadece ihtiyacınız olan yerlerde kullanmak ve tüm dünyada kullanmak daha iyidir.


Bir sembolik bağlantı yerine bir sabit link deneyebilir misiniz?
Falmarri

Yanıtlar:


92

Smb.conf dosyasını düzenle

[global]
unix extensions = no

[share]
follow symlinks = yes
wide links = yes

Not: Daha yeni bir samba sürümü kullanıyorsanız, bunun yerine aşağıdakiler işe yarayabilir:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes

üzerinde dokümantasyon follow symlinksve wide linksbayraklarla: https://www.samba.org/samba/docs/using_samba/ch08.html#samba2-CHP-8-TABLE-1


Bunun neden iyi bir çözüm olduğunu yukarıdaki sorunun sonundaki açıklamaya da bakın.
mit

Durumda, başkası bu kısa dosyayı şaşırtmakta olan tüm yorumcularla mücadele eder: bir yedeğe kopyalayın ve filtreyi yeniden oluşturun: 1: cp /etc/samba/smb.conf /etc/samba/smb.conf.bak2:grep -o '^[^#;]*' smb.conf.bak >smb.conf
Frank Nocke

ne anlama [share]geliyor [<share_name>]?
Necktwi

@neckTwi - Ben de öyle düşündüm ve benim için çalıştı.
Geoff,

@Geoff Bu benim için işe yaramadı! geçtisshfs
Necktwi

11

Selamlar, bunu kurulumum için Windows için sembolik bağlantıları düzeltmek üzere yapılandırmaya koymaya çalıştım, ancak windows istemcisini etkileyip etkilemeyeceğinden emin değilim, aksi halde bu kutuya bağlandığımda sembolik izleri izler.

[global]                                                                        
unix extensions = no

Qiqi'nin cevabı bununla aynı fikirde: superuser.com/questions/128716/…
Janus

Evet, bu kesinlikle çevremdeki sorunu çözüyor.
TML,

10

Diğer cevaplara alternatif olarak, unix uzantılarını etkin tutmak için aşağıdakileri kullanmak mümkündür:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes

ne anlama [share]geliyor [<share_name>]?
Necktwi

Evet, “paylaşılan bir kaynağı (“ paylaşım ”olarak bilinir)) (belgelerde alıntılanan) herhangi bir smb.conf bölümü olabilir. Kullandığım özel bir bölümde de olabilir [homes]. Ayrıntılar için belgelere bakın.
user1182474

4

Samba istemcilerinin paylaşılan yolun dışındaki sembolik bağlantıları izlemelerine izin vermek için Samba yapılandırmasında tek ihtiyacınız olan şey:

[global]
allow insecure wide links = yes
unix extensions = no

[myShare]
wide links = yes

(Samba'ya ek olarak elbette kendi tanımlarını da paylaşabilirsiniz). Bu - teorik olarak - * nix istemcileri için yeterli.

NB: "Follow symlinks" yönergesi varsayılan olarak "evet" olduğu için gerekli değildir.

Windows istemcilerinde ise, bu gibi bağlantıları izlemelerine izin veren 1 ayar hala eksik. Böyle yaparak :

  1. Yönetici ayrıcalıklarına sahip bir Windows kabuğu aç
  2. Çalıştırmak :

    fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
    
  3. ayarları yeniden yüklemek için yeniden başlat

Not: Aynı sonuç Windows kayıt defterini düzenleyerek de elde edilebilir. Aşağıdaki linklere bakınız

kaynaklar:


0

AppArmor kullanıyorsanız, Samba yapılandırma dosyasından daha fazlasını ele almanız gerekebilir.

Aşağıdaki yönergelere ihtiyacınız var smb.conf:

follow symlinks = yes
wide links = yes
unix extensions = no
# No need for "allow insecure wide links" unless you want "unix extensions = yes"

Ancak, AppArmor, kendi kural kümesi anlambilimine göre dosya sisteminin bölümlerine erişimi engeller. Öyleyse, Samba içindeki sembolik bağlantınız AppArmor'un engelleyeceği bir yere işaret ettiğinde, Samba erişimi reddeder.

Sistemimde Samba, hizmet başlat / durdur üzerindeki AppArmor profillerini güncelledi, böylece bir AppArmor profilini değiştirebilirim, ancak Samba ya da başka bir programın üzerine yazması riskiyle karşı karşıya kaldım. Bunun yerine, Samba'da erişmek istediğim sembolik bağlantı hedefini içeren yeri referans alarak erişilemez bir pay oluşturmaya karar verdim (hala içeride smb.conf):

# The following is a hack for AppArmor to allow the path
[share1 for AppArmor] # Or whichever name you choose
    browseable = no
    path = /home # Point to directory or parent directory of the location to access
    read only = yes
    guest ok = no
    valid users = none
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.