Einrichten einer anonymen öffentlichen Samba-Freigabe für den Zugriff über Windows 7 und XBMC

9

Ich sollte also zunächst sagen, dass ich dies vor weniger als einer Woche erfolgreich gemacht habe und keine Probleme hatte, aber seitdem habe ich meinen Server neu formatiert und neu konfiguriert, und jetzt fällt es mir am schwersten, mich daran zu erinnern, wie ich es gemacht habe.

Hier ist, was ich vorher hatte und was ich wieder zu erreichen versuche. Ich hatte eine öffentliche Samba-Freigabe auf dem Ubuntu-Server. Jeder in meinem Netzwerk kann auf die Freigabe und deren Inhalt zugreifen, indem Sie einfach \ Hostname eingeben. Kein Passwort erforderlich. Benutzer, die sich nicht in der Arbeitsgruppe der Freigabe befanden, hatten Lesezugriff, Benutzer, die sich in der Arbeitsgruppe befanden, hatten Lese- / Schreibzugriff. (Windows 7)

Wenn ich jetzt versuche, eine Verbindung zu \ Hostname herzustellen, werde ich zur Eingabe eines Benutzernamens und eines Kennworts aufgefordert. Wenn ich das un pw betrete, bekomme ich vollen Zugriff, sollte es aber nicht müssen; Meine aktuellen Einstellungen sind ...

security = user
map to guest = bad user

[Shares]
path = /home/shares
available = yes
read only = no
browsable = yes
public = yes
writable = yes
guest ok = yes

Ich ziehe mir die Haare aus. Irgendwelche Vorschläge?

BEARBEITEN:

Ugh, das macht es mir so schwer. Ich bin so nah.

Folgendes habe ich.

Ich kann von Windows 7 aus auf die Freigabe zugreifen, indem ich \ Hostname \ Sharename starte und eingebe, aber ich werde aufgefordert, einen Benutzernamen und ein Kennwort einzugeben. Ich kann es jedoch nicht einfach leer lassen, da meine Arbeitsgruppe als Domäne verwendet wird. Also gebe ich \ für den Benutzernamen ein, um ihn zu löschen und mich mit einem leeren Benutzernamen und Passwort anzumelden. Großartig, jetzt kann ich auf die Dateien in der Freigabe zugreifen.

Sobald ich in bin, funktioniert die Arbeitsgruppenkonfiguration ordnungsgemäß. Wenn ich mich auf einem Computer mit der Standard-ARBEITSGRUPPE befinde, kann ich lesen und ausführen. Ein Computer in meiner Home-Arbeitsgruppe kann lesen, schreiben und ausführen. Das funktioniert also.

Das Problem ist, es sollte überhaupt nicht nach einem Passwort gefragt werden. Es sollte für jeden im Netzwerk vollständig öffentlich sein. Ich versuche es mit XBMC zu teilen und es wird nicht einmal unter jdb im Dateimanager angezeigt. Ich kann auch nicht manuell von XBMC darauf zugreifen. Ich erhalte einen Verbindungsfehler.

Ich ziehe immer noch Haare darüber heraus. Das Schlimmste ist, dass ich das vor ungefähr einer Woche zum ersten Mal gemacht habe. Ich habe ungefähr 30 Minuten damit verbracht und es hat perfekt funktioniert. Jetzt habe ich wahrscheinlich mindestens 4 Stunden verbracht und es funktioniert immer noch nicht.

Testparm:

Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Shares]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        workgroup = FELLOWSHIP
        server string = %h server (Samba, Ubuntu)
        map to guest = Bad User
        obey pam restrictions = Yes
        pam password change = Yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        unix password sync = Yes
        syslog = 0
        log file = /var/log/samba/log.%m
        max log size = 1000
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        dns proxy = No
        wins support = Yes
        usershare allow guests = Yes
        panic action = /usr/share/samba/panic-action %d
        idmap config * : backend = tdb

[printers]
        comment = All Printers
        path = /var/spool/samba
        create mask = 0700
        printable = Yes
        print ok = Yes
        browseable = No

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/printers

[Shares]
        path = /home/shares
        read only = No
        guest ok = Yes

UPDATE: Die Freigabe ist jetzt unabhängig von der Arbeitsgruppe in meinem Netzwerk verfügbar. Jeder Windows-Benutzer, der eine Verbindung zu meinem Netzwerk herstellt, kann den NAS unter Netowork anzeigen und darauf zugreifen. Der Schlüssel war, Sicherheit auf Sicherheit = Freigabe zu setzen. Ich weiß, es ist veraltet, aber es funktioniert und Sicherheit = Benutzer und Zuordnung zu Benutzer = schlechter Benutzer hat bei mir nicht funktioniert.

Wie auch immer, jetzt scheint es, dass jeder, der eine Verbindung zur Freigabe herstellt, die globalen Unix-Berechtigungen für das Verzeichnis erhält, was verwaltbar ist. Ich möchte jedoch, dass Benutzer, die der in smb.conf angegebenen Arbeitsgruppe beitreten, Unix-Gruppenberechtigungen erhalten.

Auf diese Weise kann ich das Verzeichnis auf 775 setzen und schreiben, da ich der Arbeitsgruppe beigetreten bin, andere Benutzer jedoch nur lesen und ausführen können.

George sprach
quelle
Sie sollten in der Lage sein, Arbeitsgruppenbenutzer zuzuordnen, um bestimmte Berechtigungen mit einer Benutzernamen-Zuordnungsdatei zu erhalten: samba.org/samba/docs/man/manpages-3/smb.conf.5.html#USERNAMEMAP
Aaron

Antworten:

8

Ist zufällig über diesen Thread in den Ubuntu-Foren gestolpert und dachte, es könnte helfen. Es erklärt die Schritte, die hinter den Kulissen passieren:

Unter Windows werden der Benutzername und das Kennwort des Clients automatisch gesendet, wenn nach Freigaben gesucht wird. Dies erfolgt ohne Wissen des Benutzers. Dies zwingt Samba, mit den gesendeten Anmeldeinformationen umzugehen, obwohl es sich um eine Gastfreigabe handelt, für die keine Authentifizierung erforderlich ist.

Wenn dieser Benutzername übergeben wird, durchsucht Samba die Kennwortdatenbank nach diesem Benutzer:

  • Wenn es keine Übereinstimmung mit dem Benutzernamen gibt, wird der Client-Benutzer als "Ungültiger Benutzer" gekennzeichnet und in das Gastkonto konvertiert (zugeordnet), das standardmäßig "Niemand" ist.

  • Wenn eine Übereinstimmung mit dem Benutzernamen gefunden wird und ein Samba-Kennwort vorhanden ist, das mit dem vom Windows-Client gesendeten übereinstimmt, erhält der Windows-Benutzer automatisch Zugriff, wenn auch nicht als anonymer Benutzer. Aus diesem Grund mussten Sie "Benutzer erzwingen = niemand" hinzufügen Ihre Share-Definition.

  • Wenn eine Übereinstimmung mit dem Benutzernamen gefunden wird, das Samba-Kennwort jedoch nicht genau mit dem Kennwort übereinstimmt, das vom Windows-Client automatisch gesendet wird, werden Sie aufgefordert, ein Kennwort einzugeben - auch für eine Gastfreigabe.

Versuchen Sie force user = nobody, Ihre Freigabedefinition zu erweitern, und prüfen Sie, ob dies der Fall ist.

Bearbeiten 20.02.2013:

Gibt testparmein Exit-Code etwas anderes als Null zurück? Trotzdem würde ich weitermachen und diesem Bereich der Konfiguration einen guten, harten Blick geben. Ich bin mir auch nicht sicher, wie stark zwischen Groß- und Kleinschreibung unterschieden wird, aber bei jedem Beispiel, das ich (zum Beispiel) sehe, werden map to guest = Bad UserB und U großgeschrieben. Überprüfen Sie die Samba-Manpages auf die von Ihnen verwendeten Optionen und überprüfen Sie alles.

Aaron
quelle
Hey Bryce, danke für die Antwort. Ich habe seit meiner ursprünglichen Frage ein wenig Fortschritte gemacht, aber ich habe immer noch im Wesentlichen das gleiche Problem. Ich habe es geschafft, meine Freigabe (ich nenne sie Freigaben) so zu konfigurieren, dass jeder in der Arbeitsgruppe, der in den globalen Einstellungen in smb.conf definiert ist, direkt darauf zugreifen kann - kein Kennwort erforderlich. Fortsetzung im nächsten Kommentar ...
George Spake
Hier sind die Einstellungen für die Freigabe: [Shares] path = /home/shares browsable = yes available = yes read only = no public = yes writable = yes guest ok = yes Wenn ich sie hinzufüge, wird force user = nobodysie unterbrochen und ich kann überhaupt nicht auf die Freigabe zugreifen. Hier wird es allerdings komisch; Wenn ich testparm ausführe, wird es ausgegeben. Aus [Shares] path = /home/shares read only = no guest ok = yesirgendeinem Grund sieht es so aus, als würde es keine öffentlichen, beschreibbaren, verfügbaren und durchsuchbaren Definitionen sehen. Könnte dies ein Indikator dafür sein, wo das Problem liegt.
George sprach
@ GeorgeSpake bearbeiten gemacht ...
Aaron
1
Ich denke, Testparm spuckt einfach Sachen so aus. In der conf-Datei ist alles in Kleinbuchstaben. Ich habe auch festgestellt, und ich muss dies überprüfen, dass testparm nur nicht standardmäßige Definitionen ausgibt, die erklären würden, warum einige der Ergebnisse weggelassen werden.
George sprach
Das letzte Samba-Update 4.3.11+dfsg-0ubuntu0.14.04.3auf Ubuntu 14.04 hat meinen öffentlichen Anteil gebrochen. Dies force user = nobodyist genau das Richtige, um den öffentlichen Anteil zurückzubringen
Antony
7

So wird OpenElec konfiguriert. Sollte tun, was Sie verlangen. (Auch wenn es ein Jahr später ist ... vielleicht hilft es dem nächsten) Passen Sie einfach die Freigabeeinstellungen nach Bedarf an.

[global]
  server string = YOURSERVERNAME
  workgroup = WORKGROUP
  netbios name = %h
  security = share
  guest account = root
  socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
  smb ports = 445
  max protocol = SMB2
  min receivefile size = 16384
  deadtime = 30
  os level = 20
  mangled names = no
  syslog only = yes
  syslog = 2
  name resolve order = lmhosts wins bcast host
  preferred master = auto
  domain master = auto
  local master = yes
  printcap name = /dev/null
  load printers = no
  browseable = yes
  writeable = yes
  printable = no
  encrypt passwords = true
  enable core files = no
  passdb backend = smbpasswd
  smb encrypt = disabled
  use sendfile = yes

[share]
comment = Share
path = /share
available = yes
browsable = yes
writable = yes
public = yes
Ken
quelle
Vielen Dank für diesen Zusatz! Ich habe mich bemüht, eine öffentliche Freigabe für Windows 8.1 zu erhalten. Diese Einstellungen haben es geschafft.
Davidmdem
13
URGH! "Gastkonto = root". Dies bedeutet, dass Gastkonten root zugeordnet sind, dh uneingeschränkte Berechtigungen haben, etwas zu tun. SEI SEHR VORSICHTIG! DRACHEN VORAUS!
DanielSmedegaardBuus
0

Da die Google-Suche uns hierher bringt und es keine klare Antwort gibt, habe ich es zusammengefasst.

Nachfolgend sind die Bedingungen aufgeführt, die erforderlich sind, um sicherzustellen, dass SMB-Clients beim Zugriff auf Ihren Samba-Server nicht zur Eingabe des Benutzernamens und des Kennworts aufgefordert werden:

  1. Fügen Sie guest account = <owner-of-your-shares>unter einem [global]Abschnitt hinzu. Es ist wichtig, dass das Eigentümerkonto Ihrer Aktien Zugriff darauf hat. Wenn Sie dies nicht tun, geht Samba davon aus, dass das Gastkonto ein nobodyBenutzer ist, der wahrscheinlich keinen Zugriff auf die Daten in Ihrer Freigabe hat.

    Alternativ können Sie force user = <owner-of-your-share>unter Ihrem [shareXYZ]Block angeben .

  2. Stellen Sie sicher, dass Ihre [shareXYZ]hat guest ok = yes.

    Set, browsable = yesaber es wird normalerweise von der geerbt [global]und ist yesstandardmäßig auf gesetzt.

Dann sollte wahrscheinlich security = userauch festgelegt werden (dies ist die Standardeinstellung, wenn in Ihrer Umgebung kein Active Directory festgelegt ist). Ich bin mir jedoch nicht sicher, ob dieses Flag erforderlich ist, da ich keine AD in meiner Umgebung habe.

Wenn Sie möchten, dass der nobodyBenutzer arbeitet, können Sie dies natürlich auch tun. Danach können chown -Rh 65534:65534 /yourshareSie nur noch die einzelne Einstellung guest ok = yesunter Ihrer verwenden [shareXYZ].

Beachten Sie, dass durch Setzen rwxauf others( chmod o+rwx /yourshare) Samba mit seinem nobodyBenutzer nicht in die Freigabe gelassen wurde . Ich habe das mit überprüft strace -f -e chdir,geteuid,getegid -p <pid-of-the-parent-smbd-process>. Wahrscheinlich ignoriert Samba nur die Berechtigungen, die für das others? Nicht sicher.

Andrey Arapov
quelle
0

Es funktioniert bei mir in 30 Sekunden

Quelle: https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Standalone_Server

[global]

    map to guest = Bad User

    log file = /var/log/samba/%m

    log level = 1

[Gast]

    # This share allows anonymous (guest) access

    # without authentication!

    path = /srv/samba/guest/

    read only = no

    guest ok = yes
Gustavo Paredes
quelle