Dies ist Ubuntu Server 10.04 64 und Samba 3.4.7.
Ich habe ein freigegebenes Verzeichnis /home/mit/share
und ein anderes /home/temp
, das ich mit dem freigegebenen verknüpfe:
ln -s /home/temp /home/mit/share/temp
Aber unter Windows kann ich nach der Verwendung des Internets nicht öffnen S:/temp
, aber unter Linux ist es möglich, /home/mit/share/temp
wie erwartet darauf zuzugreifen .
Dies funktioniert, wenn ich Verzeichnisse innerhalb verknüpfe. /home/mit/share/temp
Ich vermute, Samba beschränkt sich darauf, mit einem Link außerhalb / oberhalb des freigegebenen Verzeichnisses zu springen.
BEARBEITEN:
Siehe auch diese Frage mit dem Titel Ubuntu + neueste Samba-Version. Symlinks funktionieren nicht mehr auf Freigaben, die in Windows gemountet sind .
Es scheint am besten setzen unix extensions = no
in den globalen Abschnitt und follow symlinks = yes
und wide links = yes
nur in die Aktien, wo es wirklich brauchen.
Die unix extension
Flagge muss im globalen Bereich und nicht in den einzelnen Aktienbereichen stehen. Aus Sicherheitsgründen ist es jedoch besser, die anderen Optionen nur dort zu verwenden, wo Sie sie benötigen, und nicht global.
Antworten:
Bearbeite die smb.conf
Hinweis: Wenn Sie eine neuere Version von Samba verwenden, funktioniert möglicherweise Folgendes für Sie:
Dokumentation zu
follow symlinks
undwide links
Flags: https://www.samba.org/samba/docs/using_samba/ch08.html#samba2-CHP-8-TABLE-1quelle
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
2:grep -o '^[^#;]*' smb.conf.bak >smb.conf
[share]
bedeuten[<share_name>]
?sshfs
Grüße, ich habe versucht, dies in die Konfiguration zu übernehmen, um Symlinks für Windows für mein Setup zu korrigieren. Ich bin mir jedoch nicht sicher, ob dies Auswirkungen auf den Windows-Client hat. Andernfalls folgt es Symlinks, wenn ich eine Verbindung zu dieser Box herstelle.
quelle
Alternativ zu den anderen Antworten können Sie auch Folgendes verwenden, um die Unix-Erweiterungen zu aktivieren:
quelle
[share]
bedeuten[<share_name>]
?[homes]
, in dem ich es benutze. Einzelheiten finden Sie in der Dokumentation .Damit Samba-Clients Symlinks außerhalb des freigegebenen Pfads folgen können, müssen Sie in der Samba-Konfiguration lediglich Folgendes ausführen:
(Zusätzlich zu den Samba-Freigaben-Definitionen selbst natürlich). Dies ist theoretisch für * nix-Clients ausreichend.
Hinweis: Die Direktive "follow symlinks" ist nicht erforderlich, da sie standardmäßig "yes" ist.
Bei Windows-Clients fehlt immer noch eine Einstellung, damit sie solchen Links folgen können. Um dies zu tun:
Lauf :
Starten Sie neu, um die Einstellungen neu zu laden
Hinweis: Das gleiche Ergebnis kann durch Bearbeiten der Windows-Registrierung erzielt werden. Siehe unten stehende Links
Quellen:
quelle
Sie müssen möglicherweise mehr als nur die Samba-Konfigurationsdatei adressieren, wenn Sie AppArmor ausführen.
Sie benötigen die folgenden Richtlinien in Ihrem
smb.conf
:AppArmor blockiert jedoch den Zugriff auf Teile des Dateisystems gemäß seiner eigenen Regelsatzsemantik. Wenn Ihr Symlink in Samba auf einen Speicherort verweist, den AppArmor blockieren würde, würde Samba den Zugriff verweigern.
Auf meinem System aktualisiert Samba AppArmor-Profile beim Starten / Beenden des Dienstes, sodass ich ein AppArmor-Profil ändern kann, aber riskiere, dass Samba oder ein anderes Programm es überschreibt. Stattdessen habe ich beschlossen, in Samba eine unzugängliche Freigabe zu erstellen, die auf den Speicherort verweist, der das Symlink-Ziel enthält, auf das ich zugreifen möchte (noch in
smb.conf
):quelle