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

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

Ich sollte zunächst sagen, dass ich dies vor weniger als einer Woche erfolgreich durchgeführt habe und keine Probleme hatte, aber ich habe meinen Server seitdem neu formatiert und neu konfiguriert und kann mich jetzt kaum noch daran erinnern, wie ich es gemacht habe.

Das hatte ich vorher und das versuche ich jetzt erneut. Ich hatte eine öffentliche Samba-Freigabe auf einem Ubuntu-Server. Jeder in meinem Netzwerk konnte auf die Freigabe und ihren Inhalt zugreifen, indem er einfach \Hostname eingab. Kein Passwort erforderlich. Benutzer, die nicht zur Arbeitsgruppe der Freigabe gehörten, hatten Lesezugriff, aber Benutzer, die zur Arbeitsgruppe gehörten, hatten Lese-/Schreibzugriff. (Windows 7)

Wenn ich jetzt versuche, eine Verbindung zu \Hostname herzustellen, werde ich nach einem Benutzernamen und einem Passwort gefragt. Wenn ich das un-Passwort eingebe, erhalte ich vollen Zugriff, aber das sollte nicht nötig sein; 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 reiße mir die Haare aus. Irgendwelche Vorschläge?

BEARBEITEN:

Ugh, das macht mir so zu schaffen. Ich bin so nah dran.

Hier ist, was ich habe.

Ich kann von Windows 7 aus auf die Freigabe zugreifen, indem ich auf „Start“ gehe und „\Hostname\Freigabename“ eingebe, aber ich werde nach einem Benutzernamen und einem Kennwort gefragt. Ich kann das Feld jedoch nicht einfach leer lassen, da meine Arbeitsgruppe als Domäne verwendet wird. Daher gebe ich „\“ als Benutzernamen ein, um das Feld zu löschen, und melde mich mit einem leeren Benutzernamen und Kennwort an. Super, jetzt kann ich auf die Dateien in der Freigabe zugreifen.

Sobald ich angemeldet bin, funktioniert die Arbeitsgruppenkonfiguration ordnungsgemäß. Wenn ich an einem Computer mit der Standard-Arbeitsgruppe bin, kann ich lesen und ausführen; ein Computer in meiner Heimarbeitsgruppe kann lesen, schreiben und ausführen. Das funktioniert also.

Das Problem ist, dass überhaupt kein Passwort abgefragt werden sollte. Es sollte für jeden im Netzwerk völlig öffentlich zugänglich sein. Ich versuche, es mit XBMC zu teilen, aber es wird nicht einmal unter smb im Dateimanager angezeigt. Ich kann auch nicht manuell von XBMC darauf zugreifen. Ich erhalte die Fehlermeldung „Verbindung verweigert“.

Ich reiße mir immer noch die Haare darüber aus. Das Schlimmste ist, dass ich das vor etwa einer Woche zum ersten Mal gemacht habe. Ich habe etwa 30 Minuten damit verbracht und es hat perfekt funktioniert. Jetzt habe ich wahrscheinlich mindestens 4 Stunden damit 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 nun in meinem gesamten Netzwerk verfügbar, unabhängig von der Arbeitsgruppe. Jeder Windows-Benutzer, der sich mit meinem Netzwerk verbindet, kann das NAS unter „Netzwerk“ sehen und darauf zugreifen. Der Schlüssel war, die Sicherheit auf „Sicherheit = Freigabe“ einzustellen. Ich weiß, das ist veraltet, aber es funktioniert, und „Sicherheit = Benutzer“ und „Zuordnung zu Benutzer = ungültiger Benutzer“ funktionierten bei mir nicht.

Wie dem auch sei, jetzt scheint es so, dass jeder, der sich mit der Freigabe verbindet, globale Unix-Berechtigungen für das Verzeichnis erhält, was verwaltebar ist, aber ich möchte, dass Benutzer, die der in smb.conf angegebenen Arbeitsgruppe beigetreten sind, Unix-Gruppenberechtigungen erhalten.

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

Antwort1

Zufällig stolperte ich überdieser Thread in den Ubuntu-Forenund dachte, es könnte helfen. Es erklärt die Schritte, die hinter den Kulissen passieren:

Unter Windows werden Benutzername und Passwort des Clients automatisch gesendet, wenn dieser nach Freigaben sucht – dies geschieht ohne das Wissen des Benutzers. Dadurch wird Samba gezwungen, die gesendeten Anmeldeinformationen zu verarbeiten, obwohl es sich um eine Gastfreigabe handelt, die keine Authentifizierung erfordert.

Wenn dieser Benutzername übergeben wird, durchsucht Samba seine 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-Passwort vorhanden ist, das mit dem vom Windows-Client gesendeten übereinstimmt, erhält der Windows-Benutzer automatisch Zugriff, allerdings nicht als anonymer Benutzer. Deshalb mussten Sie Ihrer Freigabedefinition „force user = nobody“ hinzufügen.

  • Wenn eine Übereinstimmung mit dem Benutzernamen gefunden wird, das Samba-Passwort jedoch nicht genau mit dem Passwort übereinstimmt, das automatisch vom Windows-Client gesendet wird, werden Sie zur Eingabe eines Passworts aufgefordert – auch bei einer Gastfreigabe.

Versuchen Sie, force user = nobodyIhrer Freigabedefinition etwas hinzuzufügen, und prüfen Sie, ob das funktioniert.

Bearbeitung 20.02.2013:

Gibt man testparmeinen Exit-Code zurück, der nicht Null ist? Trotzdem würde ich mir diesen Bereich der Konfiguration genau ansehen. Außerdem bin ich mir nicht sicher, wie groß- und kleinschreibungsempfindlich smb.conf ist, aber jedes Beispiel, das ich sehe (zum Beispiel), map to guest = Bad Userhat das B und U groß geschrieben. Schauen Sie sich dieSamba-Manpagesfür die von Ihnen verwendeten Optionen und überprüfen Sie alles noch einmal.

Antwort2

So ist OpenElec konfiguriert. Sollte das tun, was Sie verlangen. (Auch wenn es ein Jahr später ist ... vielleicht hilft es beim 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

Antwort3

Da uns die Google-Suche hierher geführt hat und es keine klare Antwort gibt, habe ich es zusammengefasst.

Nachfolgend sind die erforderlichen Bedingungen aufgeführt, um sicherzustellen, dass SMB-Clients beim Zugriff auf Ihren Samba-Server nicht nach Benutzername und Kennwort fragen:

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

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

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

    Festgelegt browsable = yes, aber es wird normalerweise von übernommen und ist standardmäßig [global]auf festgelegt .yes

Dann security = usersollte es wahrscheinlich auch 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 in meiner Umgebung kein AD habe.

nobodyWenn Sie möchten, dass der Benutzer arbeitet, können Sie natürlich einfach chown -Rh 65534:65534 /yourshare. Danach reicht Ihnen die einzelne Einstellung guest ok = yesunter Ihrem aus [shareXYZ].

Beachten Sie, dass Samba mit seinem Benutzer nicht auf die Freigabe zugreifen konnte, wenn ( ) gesetzt wurde rwx. Ich habe dies mit überprüft . Wahrscheinlich ignoriert Samba einfach die für gesetzten Berechtigungen ? Nicht sicher.otherschmod o+rwx /yoursharenobodystrace -f -e chdir,geteuid,getegid -p <pid-of-the-parent-smbd-process>others

Antwort4

Dies ist wahrscheinlich nicht für jeden mit einem solchen Problem die Lösung, aber mein Problem lag an den Berechtigungen des übergeordneten Verzeichnisses, in dem sich das freigegebene Verzeichnis befand. Sobald ich „Von anderen lesen“ aktiviert hatte, konnte ich anonym auf die Freigabe zugreifen. Dies überraschte mich etwas, da bei Windows-Servern die Berechtigungen des übergeordneten Verzeichnisses für das freigegebene Verzeichnis keine Rolle spielen.

Mein Weg sieht also folgendermaßen aus:

/data1/Downloads 

Ich musste für das data1Verzeichnis die Option „Lesen durch andere“ aktivieren.

Ich musste nichts Besonderes tun smb.conf, mein Freigabeeintrag sieht so aus ...

[Downloads]
path = /data1/Downloads
browseable = yes
read only = yes
guest ok = yes
public = yes

verwandte Informationen