Allgemeine Tipps zu Linux

Sudo

Ein Aufruf von sudo erzeugt unter Unständen (je nach Version), wenn nicht schon vorhanden, im User-Verzeichnis die leere Datei .sudo_as_admin_successful. Diese verhindert bei weiteren sudo-Aufrufen eine Benachrichtigung, man möge doch bitte die zugehörige Man-Page lesen. Letzteres wird angeblich in der /etc/bash.bashrc ausgelöst, was ich auf meinen Systemem allerdings nicht nachvollziehen konnte.
Man kann .sudo_as_admin_successful ohne Folgen löschen, sie wird beim nächsten sudo-Aufruf wieder erzeugt.

Zur Abhilfe ist die Datei /etc/sudoers.d/disable_admin_file_in_home mit dem passenden Inhalt zu erstellen :

$ sudo nano /etc/sudoers.d/disable_admin_file_in_home
# Disable ~/.sudo_as_admin_successful file
Defaults !admin_flag

sshfs

sshfs ist ein Filesystem, mit dem entfernte Verzeichnisse über ssh und sftp lokal eingebunden werden. Infos gibt es auf sshfs (Wikipedia) und der Projektseite sshfs (GitHub).

Im Folgenden gilt :

<user>          Benutzer auf dem entfernten Rechner
<hostname>      Nmae oder IP-Adresse des entfernten Rechners
<directory>     einzubindendes Verzeichnis auf dem entfernten Rechner
<mountpoint>    Startverzeichnis auf dem lokalen Rechner

Voraussetzung für die Benutzung von sshfs ist, daß auf dem entfernten Rechner der ssh-Server läuft und daß vom lokalen Rechner ein ssh-Zugang zum entfernten Rechner besteht.

Händisches Mounten funktionert praktisch sofort :

$ sshfs [<user>@]<hostname>:[<directory>] <mountpoint>

Das eigentliche Ziel ist jetzt, das Verzeichnis bereits beim Booten zu mounten. Dazu bedarf es etwas mehr Arbeit.

Schritt 1 : Passwortlose SSH-Verbindung

Zuerst muus, falls noch nicht geschehen, der SSH-Key erzeugt werden. Eie gute Anleitung dazu gibt es auf Linux-Console.net : So generieren Sie einen SSH-Schlüssel unter Linux. Wichtig ist für unseren Fall, daß keine Passphrase angegeben wird.

Die erste Zeile ist nut nötig, falls man sich schon mal an <hostname> angemeldet hatte und das nun auf passwortlos umstellen will.
Dann wird der Schlüssel übertragen und die Verbindung getestet.

$ ssh-keygen -f "/home/<user>/.ssh/known_hosts" -R "<hostname>"
$ ssh-copy-id <user>@&<hostname>
$ ssh <user>@&<hostname>
Linux ronald 6.6.51+rpt-rpi-v6 #1 Raspbian 1:6.6.51-1+rpt3 (2024-10-08) armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Dec 28 14:30:19 2024 from 192.168.___.___
$ exit
Abgemeldet
Connection to <hostname> closed.
$

Schritt 2 : Mountpoint anlegen

Der Mountpoint ist das Verzeichnis, in dem das entfernte Verzeichnis auf dem lokalen Rechner nach dem Mounten zur Verfügung steht. <mountpoint>& ist der vollständige Pfad dorthin.
Da sshfs im Userland läuft, legt man dieses Verzeichnis sinnvollerweise unter /home/<user>/ an, dann stimmen auch gleich die Zugriffrechte. Das ist aber kein Muss.

Schritt 3 : Anpassen der Filesystemtable

In der Datei /etc/fstab wird ein Eintrag für die gewünschte Verbindung eingefügt. Vorher eine Sicherung dieser Datei anzulegen ist sicher nicht die schlechteste aller Ideen.
Nach dem Abspeichern wird der Rechner neu gestartet, neu Anmelden reicht nicht!

$ sudo cp /etc/fstab /etc/fstab.backup
$ sudo nano /etc/fstab
$ sudo shutdown -r now

Die neue Zeile sieht folgendermaßen aus :

<user>@<hostname>:<directory> <mountpoint> fuse.sshfs _netdev,x-systemd.device-timeout=5,defaults,IdentityFile=/home/<user>/.ssh/id_ed25519,allow_other

Die Parameter nach fuse.sshfs sind so ziemlich das Minimum, das es zum Funktionieren braucht.

_netdev Besagt u.a., daß vor dem Mounten auf eine funktionsfähige Netzwerkverbindung zum Zielrechner gewartet werden soll.
x-systemd.device-timeout=5 Das ist die Wartezeit auf eine Reaktion des Zielrechners.
Braucht man nicht unbedingt, hat sich asber bei alten RaspberryPis bewährt.
defaults Standarteinstellung für Dateisysteme, kann nichts schaden.
IdentityFile=/home/<user>/.ssh/id_ed25519Schlüsseldatei
kann auch anderes heißen, je nach dem, welcher Schlüsseltyp verwendet wird.
allow_other Besagt, daß auch andere Benutzer auf <mountpoint> zugreifen dürfen.
Notwendig, da beim Booten von root gemaountet wird, aber <user> darauf zugreifen will.

Der jetzt im Dateisystem auftauchende Mountpoint kann wie jedes andere Verzeichnis benutzt werden.

Eine gute Anleitung zu sshfs gibt es von Alexander Veuhoff : Das SSH-Dateisystem (SSHFS): Verzeichnisse unter Linux über eine SSH-Verbindung mounten.

© Uwe Jantzen