
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 = nobody
Ihrer Freigabedefinition etwas hinzuzufügen, und prüfen Sie, ob das funktioniert.
Bearbeitung 20.02.2013:
Gibt man testparm
einen 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 User
hat 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:
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 einennobody
Benutzer 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.Stellen Sie sicher, dass Ihr
[shareXYZ]
hatguest ok = yes
.Festgelegt
browsable = yes
, aber es wird normalerweise von übernommen und ist standardmäßig[global]
auf festgelegt .yes
Dann security = user
sollte 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.
nobody
Wenn 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 = yes
unter 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.others
chmod o+rwx /yourshare
nobody
strace -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 data1
Verzeichnis 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