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 sollread onyl = no
ist notwendig, weil sonst nur Freigabeberechtigugen zum Lesen des unterpath
angegebenen Verzeichnis für den SMB-Zugriff bestehen würden.valid users = scannutzer
gewährt nur dem Samba-Benutzerscannnutzer
Zugriff von außerhalb über SMB-Zugriff.force user =
gibt den Linux-Datei-Besitzer an, mit dem die vomscannutzer
gesendeten Dateien auf Linux-Dateiebene erstellt werden (siehe dazu unten auch beim Zugriffstest)force group =
gibt die Linux-Datei-Gruppe an, mit dem die vomscannutzer
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:
Nautilus öffnen
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 aufZu 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.