Ich versuche, die Ordnerfreigabe über Samba auf meinem Ubuntu 18.04-Server zu aktivieren.
Was ich bereits getan habe:
- Bearbeiten Sie die Datei /etc/samba/smb.conf wie folgt
[global] workgroup = WORKGROUP interfaces = lo eth0 server role = standalone server server string = Samba Server %v security = user map to guest = bad user name resolve order = bcast host dns proxy = no bind interfaces only = yes log file = /var/log/samba/smb.log max log size = 10000 [Public] path = /samba/share writable = yes guest ok = yes guest only = yes read only = no create mode = 0777 directory mode = 0777 force user = nobody
- Führen Sie testparm mit diesem Ergebnis aus
Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Processing section "[Public]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] bind interfaces only = Yes dns proxy = No interfaces = lo eth0 log file = /var/log/samba/smb.log map to guest = Bad User max log size = 10000 name resolve order = bcast host security = USER server role = standalone server server string = Samba Server %v idmap config * : backend = tdb [Public] create mask = 0777 directory mask = 0777 force user = nobody guest ok = Yes guest only = Yes path = /samba/share read only = No
- Starten Sie smbd.service neu.
- Versuch, sich über Windows anzumelden. Windows kann nicht auf \SERVERNAME\ zugreifen...
- Siehe Fehlerprotokoll
[2019/06/23 21:05:54.565424, 0] ../lib/util/become_daemon.c:124(daemon_ready) STATUS=daemon 'smbd' finished starting up and ready to serve connections [2019/06/23 21:06:34.482176, 0] ../source3/smbd/ipc.c:843(reply_trans) reply_trans: invalid trans parameters
Ich bin seit ungefähr 5 Tagen dabei. Hat jemand eine Ahnung, was los ist? Wie kann ich das beheben? Ich brauche nur eine öffentliche Freigabe und eine weitere für eingeschränkten Zugriff.
Antwort1
Nur Bind-Schnittstellen = Ja
Schnittstellen = lo eth0
Sie sagen Samba, dass es nur bestimmte Schnittstellen verwenden soll, aber die von Ihnen angegebene ( eth0 ) existiert in Ubuntu 18.04 nicht. Es ist eine andere Form.
Sofern Sie keinen Grund haben, etwas anzugeben, und Samba dies lieber selbst herausfinden lassen möchten, würde ich diese beiden Zeilen aus smb.conf entfernen und smbd neu starten:
sudo service smbd restart
Wenn Sie eine bestimmte Schnittstelle angeben möchten, verwenden Sie diesen Befehl, um ihren tatsächlichen Namen zu ermitteln:
nmcli device show | grep DEVICE
Antwort2
Windows verwendet jetzt WSD (Web Services Discovery?), das in den verschiedenen Sambas, die ab Ubuntu 19.04 verfügbar sind, nicht enthalten ist.
Auf github gibt es ein Projekt, das WSD implementiert und in Python geschrieben ist. Es ist zu finden unterhttps://github.com/christgau/wsddoder direkt heruntergeladen unterhttps://raw.githubusercontent.com/christgau/wsdd/master/src/wsdd.py
Der Trick dabei besteht unter anderem darin, dass Sie einige Ports in Ihrer Firewall aktivieren müssen:
Die Ports 5357/TCP und 3702/UDP müssen geöffnet sein, damit wsdd ausgeführt werden kann.
wsdd kann über die Befehlszeile ausgeführt werden, oder Sie können einen systemd-Dienst erstellen, um es auszuführen.
Dies ist ein (vielleicht) aktiver Bereich der Samba-Entwicklung, und einige Informationen dazu finden Sie unterhttps://www.ixsystems.com/community/resources/how-to-kill-off-smb1-netbios-wins-and-still-have-windows-network-neighbourhood-better-than-ever.106/und ist derzeit im Arch-Benutzer-Repository und anscheinend auch in einigen anderen Distributionen verfügbar. Es wird auch in AskUbuntu erwähnt unterSamba-Freigabe im Windows-Netzwerk sichtbar machen
Als Service starten
Ich habe eine systemd Service Unit Datei für wsdd erstellt als /lib/systemd/system/wsdd.service
Der Inhalt ist
[Unit]
Description=WSDD Network Service
BindsTo=smbd.service
After=smbd.service
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/usr/bin/wsdd
#ExecReload=/user/bin/wsdd
[Install]
WantedBy=multi-user.target
Dann bin ich wsdd.py
zu gewechselt /usr/bin/wsdd
und habe die Berechtigungen auf 555 (Lesen und Ausführen) geändert.
Schließlich sudo systemctl enable wsdd.service
ein Neustart – und mein Ubuntu-System ist jetzt für meine Win10-Computer sichtbar.