Jak sprawić, by samba podążał za dowiązaniem symbolicznym poza wspólną ścieżką


61

To jest serwer Ubuntu 10.04 64 i samba 3.4.7.

Mam wspólny katalog /home/mit/sharei inny /home/temp, do którego linkuję:

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

Ale w S:/tempsystemie Windows po użyciu Internetu nie mogę otworzyć , ale w systemie Linux można uzyskać dostęp /home/mit/share/tempzgodnie z oczekiwaniami.

Działa to, jeśli podlinkuję katalogi wewnątrz /home/mit/share/temp, więc myślę, że samba ogranicza przeskakiwanie z linkiem na zewnątrz / powyżej katalogu współdzielonego.

EDYTOWAĆ:

Zobacz także to pytanie zatytułowane Ubuntu + najnowsza wersja samby, dowiązania symboliczne nie działają już na udziale zamontowanym w systemie Windows .

Najlepiej wydaje się umieszczenie unix extensions = now sekcji globalnej follow symlinks = yesi wide links = yestylko w sekcji akcji, gdzie jest to naprawdę potrzebne.

unix extensionFlaga musi żyć w sekcji globalnej, a nie w poszczególnych sekcjach akcji. Ale ze względów bezpieczeństwa lepiej jest korzystać z innych opcji tylko tam, gdzie jest to potrzebne, a nie globalnie.


Czy możesz wypróbować hardlink zamiast dowiązania symbolicznego?
Falmarri

Odpowiedzi:


92

Edytuj plik smb.conf

[global]
unix extensions = no

[share]
follow symlinks = yes
wide links = yes

Uwaga: Jeśli używasz nowszej wersji samby, mogą działać dla Ciebie następujące czynności:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes

dokumentacja follow symlinksi wide linksflagi: https://www.samba.org/samba/docs/using_samba/ch08.html#samba2-CHP-8-TABLE-1


Zobacz także wyjaśnienie na końcu powyższego pytania, dlaczego jest to dobre rozwiązanie.
mit

Na wypadek, gdyby ktoś zmagał się z wszystkimi komentarzami zaciemniającymi ten raczej krótki plik: skopiuj do kopii zapasowej i ponownie utwórz cp /etc/samba/smb.conf /etc/samba/smb.conf.bakgrep -o '^[^#;]*' smb.conf.bak >smb.conf
filtr

ma [share]na myśli [<share_name>]?
Necktwi,

@neckTwi - właśnie to założyłem i zadziałało dla mnie.
Geoff,

@Geoff To nie działało dla mnie! przełączono nasshfs
Necktwi

11

Pozdrowienia, próbowałem wprowadzić tę konfigurację, aby naprawić dowiązania symboliczne dla systemu Windows dla mojej instalacji, ale nie jestem pewien, czy wpłynie to na klienta Windows, w przeciwnym razie po podłączeniu do tego pola będzie podążać za dowiązaniami symbolicznymi.

[global]                                                                        
unix extensions = no

Odpowiedź Qiqi zgadza się z tą: superuser.com/questions/128716/…
Janus

Tak, to zdecydowanie rozwiązuje problem w moim środowisku.
TML

10

Alternatywnie do innych odpowiedzi, aby utrzymać włączone rozszerzenia unix, można użyć:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes

ma [share]na myśli [<share_name>]?
Necktwi,

Tak, może to być dowolna sekcja smb.conf, która „opisuje udostępniony zasób (znany jako„ udział ”)” (cytowany z dokumentacji). Może być także w specjalnej sekcji [homes], w której go używam. Szczegółowe informacje można znaleźć w dokumentacji .
user1182474,

4

Aby umożliwić klientom Samby śledzenie dowiązań symbolicznych poza wspólną ścieżką, wszystko, czego potrzebujesz w konfiguracji Samby, to:

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

[myShare]
wide links = yes

(oprócz samych definicji Samby, oczywiście). To - teoretycznie - wystarcza dla klientów * nix.

Uwaga: Dyrektywa „podążaj za dowiązaniami symbolicznymi” nie jest konieczna, ponieważ domyślnie ustawiona jest na „tak”

Jeśli chodzi o klientów Windows, nadal brakuje 1 ustawienia, aby umożliwić im podążanie za takimi linkami. Aby to zrobić:

  1. otwórz powłokę systemu Windows mającą uprawnienia administratora
  2. biegać :

    fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
    
  3. uruchom ponownie, aby ponownie załadować ustawienia

Uwaga: ten sam wynik można uzyskać, edytując rejestr systemu Windows. Zobacz linki poniżej

źródła:


0

Jeśli korzystasz z AppArmor, może być konieczne zajęcie się czymś więcej niż tylko plikiem konfiguracyjnym Samby.

Potrzebne są następujące dyrektywy smb.conf:

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

Ale AppArmor blokuje dostęp do części systemu plików zgodnie z własną semantyką zestawu reguł. Tak więc, jeśli twoje dowiązanie symboliczne w Sambie wskazywało na lokalizację, którą AppArmor zablokowałby, Samba odmówiłaby dostępu.

W moim systemie Samba aktualizuje profile AppArmor przy uruchamianiu / zatrzymywaniu usługi, abym mógł zmienić profil AppArmor, ale ryzykuję zastąpienie go przez Sambę lub inny program. Zamiast tego postanowiłem utworzyć niedostępny udział w Sambie, odwołując się do lokalizacji zawierającej cel dowiązania symbolicznego, do którego chciałem uzyskać dostęp (nadal w 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.