ubuntuusers.de

SMB Zugang - bitte ganz einfach

Status: Ungelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

Newubunti

Anmeldungsdatum:
16. Februar 2008

Beiträge: 5142

Angelehnt an kB Post mal ein Schritt-für-Schritt für den Sambateil auf dem Rechner. Sind leider ein paar Schritte. Bitte von der Länge nicht abschrecken lassen, dafür geht aber alles weitestgehend per Copy&Paste - außer dort, wo die Angaben an das eigene System anzupassen sind! (es sieht auch nach etwas mehr aus, als es in der Praxis tatsächlich ist):

Benutzer für den Zugriff vom Scanner auf den Rechner anlegen

Im folgenden wird ein Systembenutzer mit dem Namen scannutzer angelegt, der kein Homeverzeichnis und als Shell /usr/sbin/nologin zugeteilt bekommt. Dieser Nutzer kann sich damit nicht regulär an Deinem Ubuntu-Rechner anmelden:

sudo adduser --system --no-create-home scannutzer 

Den Benutzer scannutzer der Gruppe sambashare hinzufügen. Diese Gruppe wird bei der Installation von samba automatisch angelegt:

sudo usermod -a -G sambashare scannutzer 

Den Benutzer scannutzer als Samba-Benutzer anlegen und ein Passwort vergeben:

sudo smbpasswd -a scannutzer 

Dies sorgt dafür, dass der Benutzer scannutzer von außerhalb per SMB-Protokoll mit seinem Benutzernamen und seinem Passwort auf Freigaben zugreifen kann, für die er die entsprechenden Linux-Datei-Rechte und Samba-Freigabe-Rechte hat. (Siehe dazu im folgenden)

Verzeichnis außerhalb von Home anlegen und Berechtigungen vergeben

Als nächstes erstellt man ein Verzeichnis /srv/samba/scans in das später vom Scanner aus gescannt werden kann:

Verzeichnis anlegen:

sudo mkdir -p /srv/samba/scans 

Berechtigungen für den Deinen Nutzer mit dem Du gereade angemeldet bist und die Gruppe sambashare vergeben:

sudo chown -R $USER:sambashare /srv/samba/scans/ 

Der Gruppe sambashare die Linux-Dateirechte zum Schreiben einräumen, die Gruppe hat standardmäßig nur Leserechte:

sudo chmod g+w /srv/samba/scans/ 

Die Berechtigungen des Verzeichnisbaums /srv/samba/scans überprüfen:

ls -Rla /srv 

Ergebnis:

jammy@jammyvm:~$ ls -Rla /srv
/srv:
insgesamt 12
drwxr-xr-x  3 root root 4096 Jul 21 20:39 .
drwxr-xr-x 20 root root 4096 Jan 31 22:13 ..
drwxr-xr-x  3 root root 4096 Jul 21 20:39 samba

/srv/samba:
insgesamt 12
drwxr-xr-x 3 root  root       4096 Jul 21 20:39 .
drwxr-xr-x 3 root  root       4096 Jul 21 20:39 ..
drwxrwxr-x 2 jammy sambashare 4096 Jul 21 21:38 scans

/srv/samba/scans:
insgesamt 8
drwxrwxr-x 2 jammy sambashare 4096 Jul 21 21:38 .
drwxr-xr-x 3 root  root       4096 Jul 21 20:39 ..
jammy@jammyvm:~$ 

Wobei bei Deinem Ergebnis statt des Besitzers jammy Dein Nutzer stehen wird.

smb.conf in Kurzform sichern und anpassen

Aktuelle smb.conf ohne Kommentierungen in Kurzform sichern:

testparm -s | sudo tee /etc/smb.conf.bu.short 

smb.conf nun wie folgt anpassen:

sudoedit /etc/samba/smb.conf 

Folgende Anpassungen im Editor vornehmen und abschließend speichern:

# Global parameters
[global]
	log file = /var/log/samba/log.%m
	logging = file
	map to guest = Bad User
	max log size = 1000
	obey pam restrictions = Yes
	pam password change = Yes
	panic action = /usr/share/samba/panic-action %d
	passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
	passwd program = /usr/bin/passwd %u
	server role = standalone server
	server string = %h server (Samba, Ubuntu)
	unix password sync = Yes
	usershare allow guests = Yes
	idmap config * : backend = tdb


[scans]
	path = /srv/samba/scans
	read only = no
	valid users = scannutzer
	force user = jammy
	force group = sambashare

Das ist die vollständige smb.conf. Mehr braucht es für Deinen Fall nicht. Den markierten Benutzer jammy musst Du durch den Nutzer mit dem Du an Ubuntu angemeldet bist ersetzen!

Erklärungen:

  • path = gibt den Pfad zu dem Verzeichnis an, auf das von außerhalbe zugegriffen werden soll

  • read onyl = no ist notwendig, weil sonst nur Freigabeberechtigugen zum Lesen des unter path angegebenen Verzeichnis für den SMB-Zugriff bestehen würden.

  • valid users = scannutzer gewährt nur dem Samba-Benutzer scannnutzer Zugriff von außerhalb über SMB-Zugriff.

  • force user = gibt den Linux-Datei-Besitzer an, mit dem die vom scannutzer gesendeten Dateien auf Linux-Dateiebene erstellt werden (siehe dazu unten auch beim Zugriffstest)

  • force group = gibt die Linux-Datei-Gruppe an, mit dem die vom scannutzer gesendeten Dateien auf Linux-Dateiebene erstellt werden (siehe dazu unten auch beim Zugriffstest)

Ohne die beiden letzten Optionen würden die vom scannutzer angelegten Dateien auf Linux-Dateisystemebenen dem Besitzer scannuser und no group angelegt und dann könnte man nicht mit seinem Ubuntu-Nutzer von Ubuntu aus darauf zugreifen.

Wichtig!: smb.conf vom Samba-Server-Dienst neu einlesen lassen:

sudo smbcontrol all reload-config 

smbclient für Zugriffs-Test installieren

Installation:

sudo apt install smbclient 

IPv4-Adresse ermitteln

Mit dem folgenden Befehl ermittelst Du Deine IPv4-Addressen:

ip -4 a | grep -oP '(?<=inet\s)\d+(\.\d+){3}' 

Das sollte ein Ergebnis wie das folgende zurückgeben:

127.0.0.1
10.10.10.101

Die 127.0.0.1 kann man überlesen, das ist die Loopback-Schnittstelle, die andere - bei beim eigenen System sehr wahrseinlich anders lautende IP-Adresse - ist die, die im weiteren Verlauf benötigt wird.

Zugriffstest

Nun kann der Zugriff mittels smbclient getestet werden:

smbclient //10.10.10.101/scans -U scannutzer 

Für die markierte IP-Adresse muss man die eigene, im vorigen Schritt ermittelte IP-Adresse einsetzen!

Nun sollte man nach dem SMB-Passwort gefragt werden, dass man oben mittels smbpasswd eingerichtet hatte und bei korrekter Eingabe am Befehlsprompt von smbclient angelangen:

jammy@jammyvm:~$ smbclient //10.10.10.101/scans -U scannutzer
Password for [WORKGROUP\scannutzer]:
Try "help" to get a list of possible commands.
smb: \>

am smb: \> Prompt erstellt man nun testweise ein Verzeichnis:

mkdir test 

Wenn keine Fehlermeldung zurückgegeben wird war das Anlegen erfolgreich, was man mit dir überprüfen kann:

dir 
smb: \> dir
  .                                   D        0  Fri Jul 21 22:28:54 2023
  ..                                  D        0  Fri Jul 21 20:39:41 2023
  test                                D        0  Fri Jul 21 22:28:54 2023

		25106692 blocks of size 1024. 4174648 blocks available

Nun verlässt man den smbclient mittels exit:

exit 

Nun prüft man noch von Ubuntu aus gegen:

ls -la /srv/samba/scans 
jammy@jammyvm:~$ ls -la /srv/samba/scans/
insgesamt 12
drwxrwxr-x 3 jammy sambashare 4096 Jul 21 22:28 .
drwxr-xr-x 3 root  root       4096 Jul 21 20:39 ..
drwxr-xr-x 2 jammy sambashare 4096 Jul 21 22:28 test
jammy@jammyvm:~$ 

Das vom Samba-Nutzer scannutzer angelegte Verzeichnis test wurde mit dem durch force user = Besitzer und der durch force group = festgelegten Gruppe angelegt.

Wer es bis hierhin ohne Fehler geschafft hat, herzlichen Glückwunsch!

Die Samba-Einrichtung auf dem Ubuntu-Rechner ist damit abgeschlossen.

Nun muss man am Scanner unter den SMB-Optionen Host, Benutzername, Passwort und Freigabe wie bis hierhin festgelegt einrichten. Also nach diesem Beispiel wäre das:

Host: 10.10.10.101
Freigabe: scans
Benutzer: scannutzer
Passwort: Das mittels `smbpasswd` eingerichtete Passwort

Das einrichten am Scanner kann durchaus noch mal etwas hakelig sein, dass kommt auf den Scanner an.

LG, Newubunti

EDIT:

Lesezeichen für den Ordner scans in Nautilus

Damit Du den Ordner /srv/samba/scans im täglichen Gebrauch leicht über den Dateimanager Nautilus ansteuern kannst, Lesezeichen anlegen:

  1. Nautilus öffnen

  2. Einmal duchklicken nach + Andere Orte > Rechner > srv > samba > scans und dann Strg + D drücken oder alternativ für Mausschubser oben bei der Adresszeile auf die drei senkrechten Punkte klicken und dann auf Zu Lesezeichn hinzufügen.

EDIT2:

Warum nicht Freigabe scans unter /home?

In LTS-Versionen gerechnet ab Ubuntu 22.04 sind die Berechtigungen des Benutzerverzeichnisses unter /home von standardmäßig 755 bzw. drwxr-xr-x auf standardmäßig 750 bzw. drwxr-x-– geändert worden.

Also

ls -la /home/$USER | grep -E "\.$" 

ergibt z.B. für den Nutzer jammy:

jammy@jammyvm:~$ ls -la /home/$USER | grep -E "\.$"
drwxr-x--- 19 jammy jammy  4096 Jul 22 00:14 .
drwxr-xr-x  3 root  root   4096 Jul 21 16:21 ..
jammy@jammyvm:~$ 

Damit man auf Linux-Dateisystemebene aber auf ein Unterverzeichnis zugreifen kann, braucht man nicht nur die entsprechenden Berechtigungen für das spezifische Unterverzeichnis, also z.B. scans unterhalb von /home/jammy sondern man braucht in sämtlichen übergeordneten Verzeichnissen mindestens das Recht zum Traversieren, welches über x eingeräumt wird. Dieses Recht hat aber ab Ubuntu 22.04 standardmäßig nur der Benutzerordner-Besitzer.

Beim Zugriff über SMB z.b. mittels smbclient führt dies dazu, dass man sich zwar noch am Samba-Server mit den Zugangsdaten des SMB-Benutzers anmelden kann und zum smb-Prompt gelangt, aber jede weitere Operation, wie z.B. dir führt zu einem

smb: \> dir
NT_STATUS_ACCESS_DENIED listing \*

ACCESS_DENIED bezieht sich in dem Fall auf die mangelnden Linux-Dateisystem-Rechte zum Traversieren des Verzeichnisses /home/jammy.

Natürlich kann man diese Rechte auch ändern, dann weicht man aber von den Ubuntu-Standardeinstellungen ab.

Im Verzeichnis /srv werden dort angelegte Verzeichnisse standardmäßig mit dem Recht zum Traversieren für andere Benutzer angelegt, so dass man die Rechte für das Homeverzeichnis nicht ändern muss.

Diese Methode ist daher IMO vorzuziehen.

weholei

Anmeldungsdatum:
7. Februar 2019

Beiträge: 748

Wohnort: Mittelfranken

Wow

eine super Anleitung, Respekt!

Da kann ich mir einige Anregungen holen

Mit dem folgenden Befehl ermittelst Du Deine IPv4-Addressen:

ip -4 a | grep -oP '(?<=inet\s)\d+(\.\d+){3}'

Kannst du den Befehl aus dem Kopf eingeben oder hast du einen allias gesetzt?

Dazu habe ich immer Webmin benötigt, denn "ipconfig" geht ja nicht mehr ohne weiteres.

Darf man zur Anleitung auch Fragen stellen oder würde das den thread entführen?

Newubunti

Anmeldungsdatum:
16. Februar 2008

Beiträge: 5142

weholei schrieb:

ip -4 a | grep -oP '(?<=inet\s)\d+(\.\d+){3}'

Kannst du den Befehl aus dem Kopf eingeben oder hast du einen allias gesetzt?

Weder noch. Den ersten Teil ip -4 a habe ich noch im Kopf ☺. Im Bereich Ausfiltern von Informationen aus einer Befehlsrückgabe mittels regulärer Ausdrücke ist mein Gehirn aber schon immer ein großes, schwarzes Loch. Dafür habe ich zum Teil Spick-Dateien oder es wird suchmaschinelt. In diesem Fall war es für das grep -oP '(?<=inet\s)\d+(\.\d+){3}' suchmaschineln.

Darf man zur Anleitung auch Fragen stellen oder würde das den thread entführen?

Grundsätzlich von meiner Seite aus schon, aber ich würde dem TE - um nicht noch mehr Verwirrung zu schaffen (die lange Anleitung wirkt nach meiner Erfahrung für Laien schon anfordernd genug) - erst mal lieber ein paar Tage abwarten, ob noch Rückmeldung kommt.

Du könntest vielleicht auch meinen Beitrag Kopieren und als Grundlage zu einem neuen Thread machen. Frag aber mal lieber bei den Mods nach, ich will da niemanden in die Quere kommen!

LG, Newubunti

Steve_

Avatar von Steve_

Anmeldungsdatum:
10. März 2023

Beiträge: 581

Wohnort: Hannover

Threadtitel: SMB Zugang - bitte ganz einfach

Bisher ist es alles andere als das 😈

hakel2022

Anmeldungsdatum:
21. Februar 2022

Beiträge: 2906

Wie sieht es eigentlich -ganz einfach- mit der Rechten Maustaste aus?

Bei meinem billigen Thunar ist das nicht vorhanden, aber beim Nautilus sollte man doch so im home eine einfache , "persönliche" Freigabe einrichten können. (Theorie/Praxis ?)

Beim Kyocera werden ScanToFile und ScanToEmail im Adreßbuch per Webinterface hinterlegt. Wobei ich als "Admin" ScanToEmail immer noch einfacher finde. Das kann man alles vom Sessel erledigen.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9383

Wohnort: Münster

Newubunti schrieb:

weholei schrieb: […]

Darf man zur Anleitung auch Fragen stellen oder würde das den thread entführen?

Grundsätzlich von meiner Seite aus schon, aber ich würde dem TE - um nicht noch mehr Verwirrung zu schaffen (die lange Anleitung wirkt nach meiner Erfahrung für Laien schon anfordernd genug) - erst mal lieber ein paar Tage abwarten, ob noch Rückmeldung kommt.

Grundsätzlich sollte man das Stellen von Fragen dem Eröffnenden des Threads überlassen. und den Thread nicht entführen. Man kann natürlich an anderer Stelle, z.B. einem eigenen Thread, Antworten aufgreifen und dazu Fragen stellen.

Du könntest vielleicht auch meinen Beitrag Kopieren und als Grundlage zu einem neuen Thread machen.

Nein, besser nicht kopieren, sondern mit Quellenangabe verlinkt zitieren! Und möglichst auch keine Vollzitate, sondern auf den relevanten Teil gekürzt.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9383

Wohnort: Münster

hakel2022 schrieb:

[…] beim Nautilus sollte man doch so im home eine einfache , "persönliche" Freigabe einrichten können.

Ja, „sollte“ man können. Bei manchen Ubuntu-Version kann man es auch wirklich, bei anderen ist diese Funktionalität leider defekt, z.B. bei 20.04. Ich habe noch keine Übersicht, welche Versionen betroffen sind. In der Praxis ist es einfacher, per Texteditor mit Root-Rechten eine administrative Freigabe einzurichten als sich mit den Unpässlichkeiten der GUI für eine persönliche Freigabe herum zu ärgern.

Newubunti

Anmeldungsdatum:
16. Februar 2008

Beiträge: 5142

hakel2022 schrieb:

Wie sieht es eigentlich -ganz einfach- mit der Rechten Maustaste aus?

Scheitert bei 22.04 standardmäßig an den Rechten des Benutzerordners 750, sofern man für das Scannen einen eigenen Account z.B. scannutzer nutzen möchte. Das würde ich auch einem Laien immer anraten, der nach einer "einfachen Lösung" sucht. Denn nach meiner Erfahrung möchten Laien es auch stets so sicher wie möglich haben, aber halt dabei auch so einfach wie möglich (erklärt).

Bei Laien wird aller wahrscheinlich nach der Benutzer-Account der mit der UID 1000 sein, der also auch Mitglied der admin-Gruppe ist und dessen Daten hinterlegt man IMO nicht dauerhaft im Setup eines Druckers.

Weiterer Nachteil der GUI:

  • Über GUI lassen sich Freigabe-Rechte nur sehr grobschlächtig festlegen.

  • net usershare als Alternative verhält sich optisch nicht genauso wie GUI-Einstellung über nautilus-share. Gibt man den Ordner über nautilus-share frei, dann erhählt er zusätzlich in der GUI ein grünes Freigabe-Symbol, legt man die Freigab an gleicher Stelle mittels net usershare an, dann gibt es ein solches Freigabe-Symbol in Nautils nicht. Das zeigt IMO schon, wie rudimentär oberflächlich nautilus-share zu Werke zu gehen scheint.

Wenn ich jetzt hier eine Anleitung für nautilus-share gebe, dann kann man außerdem leider auch nicht wissen, ob die bei der nächsten oder übernächsten Ubuntu-Version so noch funktionieren wird.

Das ist bei einer Anleitung für die Konfiguration über die smb.conf weniger eine Problem.

Außerdem: Wenn man mal die Tests und die Erklärungen bei "meiner" Schritt-für-Schritt weglässt und das nur auf die reine Samba-Einrichtung reduziert dann bleibt:

sudo adduser --system --no-create-home scannutzer 
sudo smbpasswd -a scannutzer 
sudo usermod -a -G sambashare scannutzer 
sudo mkdir -p /srv/samba/scans 
sudo chown -R $USER:sambashare /srv/samba/scans/ 
sudoedit /etc/samba/smb.conf 
# Global parameters
[global]
...
[scans]
 	path = /srv/samba/scans
 	read only = no
 	valid users = scannutzer
 	force user = jammy
 	force group = sambashare
sudo smbcontrol all reload-config 

Das würde mit net usershare auch nicht wesentlich kürzer gehen und mit der GUI geht es in der Form - wie gesagt - gar nicht. Samba ist für Laien schon aufgrund der doppelten Nutzerverwaltung zumindest am Anfang nach meiner Erfahrung verwirrend. Hinzu kommt man smb.conf wo man als Laie - und mir geht das als fortgeschrittener Samba-Anwender bis heute so - von der Vielzahl der Konfigurationsoptionen und der Unübersichtlichkeit einfach schnell überfordert ist.

Ob der Laie am Ende 3 oder 4 Befehle per Copy&Paste von einer Anleitung in sein Terminal übertragen muss, ist ihm am Ende nach meiner Erfahrung egal, solange es im Ergebnis funktioniert.

Um das ganze aus Laien-Perspektive zu vereinfachen, müssten GUI-Programmierer sich halt des Sachverhaltes annehmen, aber wenn man sieht, dass die schon daran scheitern, die Rechte im übergeordneten Verzeichnissen zu prüfen, wenn sie die Rechte des eigentlichen Freigabe-Ordner setzen, dann darf man da wohl eher nicht zu viel erwarten.

Scan-to-Email läuft doch wahrscheinlich dann wenigstens über den Server des Mail-Providers - der vielleicht auch nicht jeden Scan soll lesen können, oder?

LG, Newubunti

Antworten |