Einige der in diesem Beitrag geteilten Links sind Affiliate-Links. Wenn du auf den Link klickst und etwas kaufst, erhalten wir eine Affiliate-Provision ohne zusätzliche Kosten für dich.
Proxmox: CIFS Share in LXC Container mounten
Auch um einen CIFS Share in einem Proxmox LXC Container einzuhängen benötigen wir einen Privilegierten Container mit dem Aktivierten Feature wie unter den Voraussetzungen beschrieben.
Vorrausetzung
Um eine NFS oder CIFS Freigabe Mounten zu können muss der Container Privilege sein und die Optionen unter Features aktiviert haben. Den Privilege Modus kann man nur bei Erstellung des Containers Aktivieren.
Um einen Privileged LXC Container in Proxmox zu erstellen muss auf der ersten Seite des Create: CT Dialogs das Häkchen bei der Option „Unprivileged container“ herausgenommen werden:
Nun muss in den Optionen des Containers noch nfs bzw. cifs aktiviert werden. Dafür klickt man im Container Menü (Man muss den Container im linken Menü auswählen) auf „Options“ dort auf „Features“ und dann links oben auf „Edit“. Dort setzt man bei nfs bzw. cifs ein Häkchen und dann auf „OK“
Achtung!
Privilegierte LXC Container bergen ein nicht unerhebliches Risiko. Dazu mehr hier:
Privilegierte Container laufen unter dem Root-Benutzer des Hostsystems. Das bedeutet, dass der Root-Benutzer innerhalb des Containers auch Root-Rechte auf dem Host hat.
Aufgrund der Tatsache, dass Root-Rechte des Containers auf das Host-System ausgedehnt werden können, stellen privilegierte Container ein höheres Sicherheitsrisiko dar. Ein Sicherheitsproblem im Container könnte potenziell das gesamte Host-System gefährden.
APT: CIFS-Utils installieren
Auch um eine CIFS-Freigabe in einem LXC Container einzuhängen müssen wir das entsprechende Paket nachinstallieren.
Erstmal Updaten wir die Paketquellen und die installierten Pakete selbst:
sudo apt-get update && apt-get upgrade -y
Dann installieren wir die cifs-utils:
sudo apt-get install cifs-utils
Die Abfrage bestätigen wir mit Yes (Y)
CIFS Share Mounten
Danach kann man bereits einen CIFS-Share in dem Proxmox LXC Container Mounten. Dafür kann man den mount Befehl verwenden. Über den Befehl gemountete Laufwerke sind nur bis zum nächsten Neustart verfügbar. Wie man mithilfe von fstab Automatisch Laufwerke einbindet folgt weiter unten.
Achtung!
Wird das Passwort in den Shell Command eingefügt wird es in der Historie-Funktion der laufenden Shell gespeichert. So können andere Personen Leicht an das Passwort kommen.
Deswegen sollte man auf nicht Vertrauenswürdigen Geräte nie die Passwort Option verwenden. In dem fall führt man den Mount Befehl ohne Passwort aus und wird dann in einem interaktiven Dialog danach gefragt.
Wie auch der NFS-Share kann der CIFS Share ebenfalls über den mount Befehl eingebunden werden:
sudo mount -t cifs //192.168.1.3/volume1/Cybertalk /mnt/Cybertalk -o username=Tobias,password=secret
Ein Unterschied zu NFS fällt sofort auf: Es werden Zugangsdaten in form eines Usernamens und eines Passwortes benötigt. Das sind die Daten die man zum Anmelden auf dem Server verwendet.
So sieht die Syntax für den Mount cifs Befehl aus:
sudo mount -t cifs //servername/sharename /mnt/mountpoint -o username=yourusername,password=yourpassword,domain=example,uid=1000,gid=1000
Die Domain uid und gid Option werden nur in bestimmten fällen benötigt.
Bevor wir also unseren CIFS Share auf dem Server 192.168.1.2/volume1/Cybertalk einbinden können müssen wir erst den lokalen einhängepunkt (Ordner) erstellen:
mkdir /mnt/Cybertalk
Dann können wir unseren CIFS-Share einhängen:
sudo mount -t cifs //192.168.1.3/volume1/Cybertalk /mnt/Cybertalk -o username=Tobias,password=secret
Wenn wir jetzt in unseren einhängepunkt Navigieren können wir, falls vorhanden, bereits die Daten und Ordner auf dem Share sehen:
Mit ls -a werden alle Dateien und Ordner angezeigt.
CIFS-Share Automatisch Mounten
Auch beim CIFS-Mount gilt: Mit dem Befehl ist der Share nur bis zum nächsten Neustart des Gerätes eingehängt. Wenn wir also möchten das die CIFS-Freigabe immer automatisch eingehängt wird müssen wir einen Eintrag in die fstab Datei machen.
Die fstab Datei findet man unter /etc/fstab und lässt sich mit einem Editor seiner Wahl öffnen.
nano /etc/fstab
So sieht das dann aus:
In die fstab Datei kann man allerdings nicht einfach den vorher aufgestellten Mount Befehl kopieren hier sieht die Syntax etwas anders aus:
//device/sharename /mnt/mountpoint cifs credentials=/home/Tobias/.smbcredentials,uid=1000,gid=1000,vers=3.0 0 0
Fstab Optionen
device
: Hier wird angegeben, wo das Dateisystem zu finden ist (Server)mount-point
: Hier wird angegeben, wo das Dateisystem im Dateisystem des Host-Computers eingehängt werden soll (z.B. /mnt/Cybertalk).filesystem-type
: Hier wird das Dateisystem angegeben (z.B. ext4, ntfs, etc.).options
: Hier werden die Mount-Optionen für das Dateisystem angegeben (z.B. rw für lesen/schreiben-Zugriff).dump
: Hier wird angegeben, ob das Dateisystem gesichert werden soll (0 = nein, 1 = ja).pass
: Hier wird angegeben, in welcher Reihenfolge das Dateisystem geprüft werden soll (0 = keine Überprüfung, 1 = Überprüfung beim Systemstart, 2 = Überprüfung beim Systemstart, aber erst nach allen anderen Dateisystemen).auto
– das Dateisystem wird automatisch beim Booten eingehängt, oder wenn der Befehl ‘mount -a’ ausgegeben wird.noauto
– das Dateisystem wird nur manuell eingehängt.exec
– erlaubt die Ausführung von Binärdateien, die sich auf dieser Partition befinden (Voreinstellung).noexec
– Binärdateien dürfen nicht auf dem Dateisystem ausgeführt werden.ro
– mountet das Dateisystem nur lesend.rw
– mountet das Dateisystem lesend und schreibend.sync
– I/O soll synchron erfolgen.async
– I/O soll asynchron erfolgen.user
– erlaubt jedem Benutzer, das Dateisystem zu mounten (impliziert noexec,nosuid,nodev, es sei denn, es wird überschrieben).nouser
– erlaubt nur root das Mounten des Dateisystems (Voreinstellung).defaults
– Standard-Einstellungen für das Einhängen (äquivalent zu rw,suid,dev,exec,auto,nouser,async).suid
– erlaubt den Betrieb von suid- und sgid-Bits. Sie werden meist verwendet, um Benutzern auf einem Computersystem die Ausführung von Binärdateien mit vorübergehend erhöhten Rechten zu ermöglichen, um eine bestimmte Aufgabe zu erfüllen.nosuid
– blockiert den Betrieb von suid- und sgid-Bits.noatime
– aktualisiert nicht die Inode-Zugriffszeiten auf dem Dateisystem. Kann die Leistung verbessern.relatime
– aktualisiert die Inode-Zugriffszeiten relativ zur Modifizierungs- oder Änderungszeit. Die Zugriffszeit wird nur dann aktualisiert, wenn die vorherige Zugriffszeit vor der aktuellen Änderungs- oder Änderungszeit lag (ähnlich wie noatime, aber es stört nicht mutt oder andere Anwendungen, die wissen müssen, ob eine Datei seit der letzten Änderung gelesen wurde). Kann die Leistung verbessern.
Welche Filesystem-Types gibt es?
Die Datei /etc/fstab
unter Linux unterstützt eine Vielzahl von Dateisystemtypen. Hier sind einige der häufigsten Dateisystemtypen, die in fstab
verwendet werden können:
- Lokale Dateisysteme:
- ext4, ext3, ext2: Extended Filesystems, weit verbreitet und standardmäßig bei vielen Linux-Distributionen.
- btrfs: Ein modernes Copy-on-Write-Dateisystem mit erweiterten Funktionen wie Snapshots und RAID.
- xfs: Ein leistungsstarkes Dateisystem, das gut für große Dateisysteme und hohe Leistungsanforderungen geeignet ist.
- reiserfs: Ein Dateisystem, das für seine Effizienz bei der Handhabung kleiner Dateien bekannt ist.
- jfs: Das Journaled File System, entwickelt von IBM.
- vfat, msdos: FAT-basierte Dateisysteme, die häufig für Wechselmedien und plattformübergreifende Kompatibilität verwendet werden.
- ntfs: Ein Dateisystem von Microsoft, das für die Verwendung mit Windows entwickelt wurde, aber auch unter Linux mit NTFS-3G unterstützt wird.
- zfs: Ein fortschrittliches Dateisystem mit Funktionen wie RAID-Z, Snapshots und Datenkompression.
- Netzwerk-Dateisysteme:
- nfs: Network File System, verwendet für den Zugriff auf Dateien über ein Netzwerk.
- cifs: Common Internet File System, verwendet für die Interoperabilität mit Windows-Dateifreigaben.
- smbfs: Ein älteres Netzwerk-Dateisystem, das ebenfalls für die Interoperabilität mit Windows verwendet wird, aber weitgehend durch CIFS ersetzt wurde.
- sshfs: Ein Dateisystem, das auf dem SSH File Transfer Protocol basiert und den Zugriff auf entfernte Verzeichnisse über SSH ermöglicht.
- Pseudo-Dateisysteme:
- proc: Ein virtuelles Dateisystem, das Kernel- und Prozessinformationen bereitstellt.
- sysfs: Ein virtuelles Dateisystem, das Informationen über Geräte und Treiber im System bereitstellt.
- tmpfs: Ein temporäres Dateisystem, das im RAM gespeichert wird und häufig für temporäre Verzeichnisse wie
/tmp
verwendet wird. - devtmpfs: Ein Dateisystem, das vom Kernel verwendet wird, um Geräteinformationen im
/dev
-Verzeichnis bereitzustellen. - fuse: Dateisysteme, die das Filesystem in Userspace (FUSE) verwenden, z.B.
sshfs
oderencfs
.
Diese Liste ist nicht vollständig, aber sie umfasst die häufigsten Dateisystemtypen, die in der /etc/fstab
-Datei spezifiziert werden können. Jeder dieser Typen wird durch ein entsprechendes Modul im Linux-Kernel unterstützt oder kann durch zusätzliche Software wie FUSE eingebunden werden.
Was macht die dump Option?
Die dump
-Option in der /etc/fstab
-Datei gibt an, ob das Dateisystem durch das dump
-Backup-Programm gesichert werden soll. Es ist der fünfte Eintrag in einer fstab
-Zeile und hat normalerweise zwei mögliche Werte:
0
: Das Dateisystem wird nicht vomdump
-Programm gesichert.1
: Das Dateisystem wird vomdump
-Programm gesichert.
Bei NFS-Shares wird dieser Wert typischerweise auf 0
gesetzt, da NFS-Freigaben in der Regel nicht von lokalen dump
-Backups erfasst werden sollten. Hier ist ein Beispiel für einen fstab
-Eintrag für ein NFS-Share:
192.168.1.2:/volume1/Cybertalk /mnt/Medien nfs defaults 0 0
Der fünfte Wert 0
zeigt an, dass das NFS-Share nicht vom dump
-Programm gesichert wird.
Das dump
-Backup-Programm ist ein traditionelles Unix-Tool zur Sicherung von Dateisystemen auf Blockebene. Es erstellt vollständige und inkrementelle Backups, indem es den Inhalt von Dateisystemen direkt von der Festplatte liest. dump
arbeitet eng mit dem Dateisystem zusammen, um eine genaue und effiziente Kopie der Daten zu erstellen. Die Backups werden üblicherweise auf Bändern, Festplatten oder anderen Speichermedien gespeichert.
Das Programm verwendet Ebenen (Level), um festzulegen, wie umfassend ein Backup ist:
- Level 0: Ein vollständiges Backup des gesamten Dateisystems.
- Level 1-9: Inkrementelle Backups, die nur die Änderungen seit dem letzten Backup einer niedrigeren Ebene enthalten.
Zusammen mit restore
, dem Programm zum Wiederherstellen von dump
-Backups, bietet dump
eine zuverlässige Methode zur Datensicherung und -wiederherstellung in Unix- und Linux-Umgebungen. Es ist jedoch weniger verbreitet als modernere Backup-Lösungen, die oft erweiterte Funktionen und Benutzerfreundlichkeit bieten.
Was macht die Pass Option?
Die pass
-Option in der /etc/fstab
-Datei ist das sechste Feld in jeder Zeile und bestimmt die Reihenfolge, in der Dateisysteme beim Systemstart durch das fsck
-Programm überprüft werden. Die Werte für die pass
-Option haben folgende Bedeutung:
- 0: Das Dateisystem wird beim Systemstart nicht überprüft.
- 1: Das Dateisystem wird zuerst überprüft. Dies gilt normalerweise für das Root-Dateisystem.
- 2: Diese Dateisysteme werden nach den
pass=1
-Dateisystemen überprüft. Mehrere Dateisysteme mit dem Wert 2 werden in der Reihenfolge geprüft, in der sie in derfstab
-Datei aufgeführt sind.
Bei NFS-Freigaben wird die pass
-Option typischerweise auf 0
gesetzt, da Netzwerkdateisysteme nicht durch fsck
überprüft werden müssen. Hier ist ein Beispiel für einen fstab
-Eintrag für ein NFS-Share:
192.168.1.2:/volume1/Cybertalk /mnt/Medien nfs defaults 0 0
Der sechste Wert 0
zeigt an, dass das NFS-Share nicht vom fsck
-Programm überprüft wird.
Was macht fsck?
Das fsck
-Programm (File System Consistency Check) ist ein Dienstprogramm unter Unix- und Linux-Systemen, das zur Überprüfung und Reparatur von Dateisystemen verwendet wird. Es wird normalerweise während des Systemstarts oder manuell vom Systemadministrator ausgeführt, um sicherzustellen, dass Dateisysteme konsistent und frei von Fehlern sind. Hier sind die Hauptfunktionen von fsck
:
- Überprüfung:
fsck
durchsucht das Dateisystem nach Inconsistenzen wie fehlerhaften Blockzuweisungen, verlorenen Inodes und inkorrekten Verzeichnisstrukturen. - Reparatur: Wenn
fsck
Fehler findet, versucht es, diese zu reparieren. Dies kann das Wiederherstellen von verlorenen Dateien, das Entfernen von beschädigten Dateien oder das Korrigieren von Verzeichnisstrukturen umfassen. - Prävention von Datenverlust: Durch die Identifizierung und Behebung von Dateisystemfehlern hilft
fsck
, potenziellen Datenverlust zu verhindern und die Integrität des Dateisystems zu gewährleisten. - Automatisierung beim Systemstart: Wenn ein System unsauber heruntergefahren wurde (z.B. aufgrund eines Stromausfalls), wird
fsck
beim nächsten Start automatisch ausgeführt, um das Dateisystem zu überprüfen und zu reparieren.
In der /etc/fstab
-Datei legt die pass
-Option fest, in welcher Reihenfolge fsck
die Dateisysteme überprüfen soll. Netzwerkmounts wie NFS-Shares sind von dieser Überprüfung in der Regel ausgeschlossen, da fsck
nur lokale Dateisysteme überprüfen und reparieren kann.
Unser Angepasster Eintrag Sieht folgendermaßen so aus:
//192.168.1.2/volume1/Cybertalk /mnt/Cybertalk cifs credentials=/home/Tobias/.smbcredentials,vers=3.0 0 0
Hier werden die Credentials in eine eigene Datei ausgelagert. Dies wird gemacht um die Zugangsdaten vor den Blicken unbefugter zu schützten.
Dafür legen wir eine Datei an. Diese kann z.B. im Homeverzeichnis liegen:
nano .smbcredentials
Der Punkt vor dem Dateinamen sorgt dafür das die Datei Versteckt wird. In diese Datei schreiben wir folgende Einträge:
username=username
password=secret
domain=workgroup
Zu beachten ist das in die fstab Datei pro Zeile immer nur ein Eintrag geschrieben wird. Wir Kopieren nun also unseren Eintrag in die Fstab Datei unter den mit # makierten Kommentar und Speichern die Datei mit: STRG + X -> Save Buffer -> Y -> Enter
Dann müssen noch die Rechte so gesetzt werden das nur wir selbst diese Datei einsehen dürfen. Dafür führen wir folgenden Befehl aus:
chmod 600 ~/.smbcredentials
Auch wenn wir die Datei abgespeichert haben, ist die CIFS Freigabe noch nicht eingehängt. Um die fstab manuell auszuführen benötigen wir die beiden befehle:
sudo systemctl daemon-reload
sudo mount -a
Jetzt ist der CIFS-Share in dem Proxmox LXC Container eingehängt und Verfügbar.