Unter Linux gibt es mehrere Möglichkeiten, SMB/CIFS-Freigaben automatisch einzubinden. Im Folgenden wird eine schlanke Lösung über einen eigenen systemd-Service beschrieben.
1. Voraussetzungen
- Pakete:
cifs-utils(fürmount.cifs) - Eintrag in
/etc/fstabfür die gewünschte Freigabe - Optional: Anmeldedaten in einer separaten Credentials-Datei
- Root-Rechte für Installation/Konfiguration
2. Beispiel für /etc/fstab
Voraussetzung für den erfolgreichen Mount ist ein passender fstab-Eintrag:
# /etc/fstab: static file system information. # # SMB Mounts //{IP-ADRESSE-SMB-SERVER}/{PFAD} /mnt/{LOKALES_VERZEICHNIS} cifs noperm,_netdev,users,credentials=/home/{USER}/.smbuser,uid=1000,gid=1000,file_mode=0777,dir_mode=0777,iocharset=utf8 0 0
Wichtig: Passen Sie alle Platzhalter an Ihr System an (IP-ADRESSE-SMB-SERVER, PFAD, LOKALES_VERZEICHNIS, USER, UID/GID usw.).
3. Credentials-Datei (empfohlen)
Bewahren Sie Benutzername/Passwort getrennt von der fstab auf:
# Pfad: /home/{USER}/.smbuser username=MEINBENUTZER password=MEINPASSWORT domain=MEINEDOMAIN
Rechte setzen:
chmod 600 /home/{USER}/.smbuser
Alternativ können Sie vers=3.0 (oder kompatible Version) im Optionsfeld der fstab angeben, falls Ihr Server eine bestimmte SMB-Version erfordert.
4. systemd-Service anlegen
Erstellen Sie eine Service-Datei, die beim Booten auf das Netzwerk wartet und dann den Mount ausführt:
sudo nano /etc/systemd/system/mountsmb.service
[Unit] Description=Mount specific SMB mountpoints from fstab After=network-online.target Wants=network-online.target
[Service]
Type=oneshot
Optional: Erreichbarkeit des SMB-Servers testen (IP anpassen)
ExecStartPre=/bin/ping -c 3 {IP-ADRESSE-SMB-SERVER}
Variante A: Einzelnes Zielverzeichnis mounten
ExecStart=/usr/bin/mount /mnt/{LOKALES_VERZEICHNIS}
Variante B: alle in fstab definierten Mounts einhängen (ohne noauto)
ExecStart=/usr/bin/mount -a -t cifs
ExecStop=/usr/bin/umount -l /mnt/{LOKALES_VERZEICHNIS}
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Service laden und aktivieren:
sudo systemctl daemon-reload
sudo systemctl enable mountsmb.service
Optional: Service sofort starten und prüfen
sudo systemctl start mountsmb.service
sudo systemctl status mountsmb.service
Bei einem Neustart wartet der Service auf die Netzwerkverfügbarkeit und mountet die SMB-Freigabe(n). Für mehrere Freigaben fügen Sie mehrere ExecStart-Zeilen ein oder nutzen Sie die Variante mit mount -a.
5. Verzeichnisstruktur anlegen
Stellen Sie sicher, dass das lokale Zielverzeichnis existiert:
sudo mkdir -p /mnt/{LOKALES_VERZEICHNIS}
6. Tests & Fehlerdiagnose
- Manueller Test des Mounts:
sudo mount /mnt/{LOKALES_VERZEICHNIS} ls -la /mnt/{LOKALES_VERZEICHNIS} - Logs prüfen:
journalctl -u mountsmb.service -b - Typische Optionen:
# SMB-Version erzwingen (Beispiel) ... ,vers=3.0,sec=ntlmssp,serverino ... # Berechtigungen anpassen ... ,uid=1000,gid=1000,file_mode=0644,dir_mode=0755 ... - Fehlerbilder:
- Permission denied: Credentials/ACLs/Optionen prüfen.
- Host is unreachable: Netzwerk/Firewall/Namenauflösung prüfen.
- Operation not supported: SMB-Version/Optionen an Server anpassen.
7. Alternative: Automount mit systemd
Statt eines separaten Services können Sie über x-systemd.automount im fstab einen bedarfsgesteuerten Automount aktivieren. Das ermöglicht Mounten beim ersten Zugriff und automatisches Unmounten nach Inaktivität.
//{IP-ADRESSE-SMB-SERVER}/{PFAD} /mnt/{LOKALES_VERZEICHNIS} cifs x-systemd.automount,_netdev,users,credentials=/home/{USER}/.smbuser,uid=1000,gid=1000,file_mode=0644,dir_mode=0755,iocharset=utf8 0 0
Aktivieren:
sudo systemctl daemon-reload
sudo systemctl restart remote-fs.target
Hinweise
- Passen Sie alle Platzhalter an Ihre Umgebung an.
- Achten Sie auf sichere Dateirechte der Credentials-Datei (
chmod 600). - Nutzen Sie sinnvolle Dateirechte (
file_mode,dir_mode) statt globaler 0777. - Für produktive Umgebungen empfiehlt sich die Automount-Variante oder eigene
.mount/.automount-Units.