Mounten Sie die CIFS-Freigabe mit Autofs

12

Ich habe ein System mit RHEL 5.5 und versuche, eine Windows-Freigabe auf einem Server mit bereitzustellen autofs. (Da das Netzwerk beim Start nicht bereit ist, möchte ich es nicht verwenden fstab.) Ich kann die Freigaben manuell bereitstellen, mounte sie jedoch nicht autofs.

Hier sind die Dateien, mit denen ich arbeite:

Am Ende habe /etc/auto.masterich:

## Mount this test share:
/test    /etc/auto.test    --timeout=60

In habe /etc/auto.testich:

test    -fstype=cifs,username=testuser,domain=domain.com,password=password ://server/test

Ich starte dann den autofsDienst neu.

Dies funktioniert jedoch nicht. ls-ing das Verzeichnis gibt keine Ergebnisse zurück. Ich habe all diese Anleitungen im Internet befolgt und verstehe sie entweder nicht oder sie funktionieren einfach nicht.

Danke

Phanto
quelle
Erhalten Sie etwas in den Protokollen?
c1tadel1
Wo sind die Protokolle? Ich habe erfolglos versucht /var/log/messages, und es gibt keine Syslog-Datei.
Phanto
Sie suchen am richtigen Ort. Versuchen Sie "echo 1> / proc / fs / cifs / cifsFYI", um die Debug-Meldungen ein wenig zu erhöhen und dmesg auszuprobieren.
c1tadel1
Ich habe das /proc/fs/cifs/Verzeichnis nicht, daher kann ich den Befehl nicht ausführen. Ich kann auch nicht mkdir cifs, auch nicht als Wurzel. Der Dienst läuft, aber ich weiß im Ernst nicht, warum er einfach nicht funktioniert. Möglicherweise muss ich mich an den RH-Support wenden.
Phanto
Vergiss den Proc-Ort. Haben Sie das Modul überhaupt installiert? Führen Sie dies aus. ls -al / lib / modules / uname -r/ kernel / fs / cifs sollten Sie cifs.ko
c1tadel1

Antworten:

9

Es sollte bereits eine /etc/auto.smb vorhanden sein. Verwenden Sie diese und fügen Sie die folgende Zeile zu /etc/auto.master hinzu:

/cifs   /etc/auto.smb --timeout=60

Jetzt werden alle cifs-Freigaben unter / cifs angezeigt:

ls /cifs/<server>

zeigt alle verfügbaren Aktien an. Möglicherweise möchten Sie einige Optionen in /etc/auto.smb einfügen, um sie mit bestimmten Modi bereitzustellen. Ich habe eine auto.smb, die ich irgendwo herausgefunden und geändert habe, um genau das zu tun:

#!/bin/bash
# $Id: auto.smb,v 1.3 2005/04/05 13:02:09 raven Exp $
# This file must be executable to work! chmod 755!

key="$1"
credfile="/etc/auto.smb.$key"

opts="-fstype=cifs,file_mode=0644,dir_mode=0755,uid=eng,gid=eng"
smbclientopts=""

for P in /bin /sbin /usr/bin /usr/sbin
do
    if [ -x $P/smbclient ]
    then
        SMBCLIENT=$P/smbclient
        break
    fi
done

[ -x $SMBCLIENT ] || exit 1

if [ -e "$credfile" ]
then
    opts=$opts",credentials=$credfile"
    smbclientopts="-A "$credfile
else
    smbclientopts="-N"
fi

$SMBCLIENT $smbclientopts -gNL $key 2>/dev/null| awk -v key="$key" -v opts="$opts" -F'|' -- '
    BEGIN   { ORS=""; first=1 }
    /Disk/  {
              if (first)
                  print opts; first=0
              dir = $2
              loc = $2
              # Enclose mount dir and location in quotes
              # Double quote "$" in location as it is special
              gsub(/\$$/, "\\$", loc);
              print " \\\n\t \"/" dir "\"", "\"://" key "/" loc "\""
            }
    END     { if (!first) print "\n"; else exit 1 }
'

Dies wird tun, was Sie wollen. Ich habe es selbst benutzt.

lsd
quelle
Vielen Dank. Ich habe dieses Problem völlig vergessen. Ich habe mich tatsächlich an den Red Hat-Support gewandt, und die Optionen, die Sie in den von Ihnen erwähnten Optionen erwähnen, funktionieren. Der Schlüssel war, die Informationen auto.miscaus irgendeinem Grund zu platzieren. Es ist lustig, da wir das nicht einmal mehr tun müssen.
Phanto
Dies ist nützlich, aber leider kann ich die Einhängepunkte nicht anpassen, was das ursprüngliche Ziel der Frage war (und was ich hier herausgefunden habe)
Carlos Rendon
Als interessante Entwicklung musste ich bei Verwendung eines EMV-Geräts (nicht sicheres Modul) das -N aus der smbclient-Zeile entfernen. Ist heute auf dieses Problem gestoßen.
LSD
Außerdem darf die Anmeldeinformationsdatei keine Leerzeichen zwischen den Gleichheitszeichen enthalten. Das verursachte eine Reihe von Fehlern, bis ich das herausfand. Zwei verschiedene Dokumentationen sagten verschiedene Dinge.
LSD
8

Da ich gerade meinen ganzen Morgen damit verbracht habe, dasselbe Problem zu debuggen. Lassen Sie mich erklären, was oben passiert ist.

/etc/auto.master

## Mount this test share:
/test    /etc/auto.test    --timeout=60

Dies bedeutet, dass ich etwas an /testund für die Details lesen möchte/etc/auto.test

/etc/auto.test

test    -fstype=cifs,username=testuser,domain=domain.com,password=password ://server/test

Dies bedeutet, dass Sie als Unterordner der in auto.master angegebenen Informationen den Test mit den folgenden Informationen bereitstellen. (dh die Halterung wird so/test/test richtig hervorgehoben).

Dies bedeutet, dass ls /test/testder Inhalt von angezeigt wird//server/test

Um das ursprüngliche Ziel von / test -> // server / test zu erreichen, möchten Sie Folgendes:

/etc/auto.master

## Mount this test share:
/    /etc/auto.test    --timeout=60

Ein paar andere Notizen. Ich fand die folgenden Mount-Optionen nützlich.

rw - Mount es lesen / schreiben

noserverino - Entfernt eine Fehlermeldung zur Unterstützung von Inode-Nummern

credentials=[credential file]- Auf diese Weise können Sie eine separate Datei mit den darin enthaltenen Anmeldeinformationen erstellen. Es hat das folgende Format:

username=[windows username, domain can be included as well]
password=[windows password]

BEARBEITEN - 17.06.2013 13:28 GMT-8

slm in den Kommentaren hat darauf hingewiesen, dass das Mounten im Stammverzeichnis des Dateisystems gefährlich sein kann. lsd in den Kommentaren schlägt eine Problemumgehung vor, bei der ein Symlink vom Stammverzeichnis des Dateisystems zu einem anderen Ort erstellt wird, an dem Sie mounten würden, der sich nicht mit etwas Gemeinsamem überschneidet. Wenn Sie beispielsweise möchten, dass / test ein Mount ist, mounten Sie tatsächlich Inhalte in / net / the_test_mount und erstellen dann einen Symlink / Test, der auf / net / the_test_mount verweist

Carlos Rendon
quelle
3
Dies ist insofern gefährlich, als wenn jemand usr oder etc zum Beispiel zu /etc/auto.test hinzufügen würde, dass diese Mounts diese Verzeichnisse auf dem System effektiv überschreiben würden. Zugegeben, das ist höchst unwahrscheinlich, aber im Allgemeinen werden Reitvorgänge nicht auf der Stammebene durchgeführt.
Slm
Gibt es eine bessere Möglichkeit, ein Root-Mount mithilfe von Autofs bereitzustellen? Wenn ja, aktualisieren Sie bitte Ihre Antwort oder hinterlassen Sie einen Kommentar und ich kann meine aktualisieren.
Carlos Rendon
1
Lassen Sie die Mounts beispielsweise nach / net gehen und symbolische Links von / test zu / net / server / test (oder was auch immer) haben. Wann immer Sie zu / net und ls oder was auch immer cd, wird es gemountet.
LSD
4

Ich habe dies gerade auf einer CentOS 5.6-Box gemacht und ich denke, ein Teil Ihres Problems könnte in Ihrer auto.test-Datei liegen. In der aktuellen Form erstellen Sie einen / test-Einhängepunkt und dann einen einzelnen Testzug darunter, dh / test / test. Vielleicht möchten Sie auch den Schalter --ghost wie folgt zu Ihrer auto.master-Zeile hinzufügen:

/test    /etc/auto.test    --timeout=60 --ghost

Der Schalter --ghost erstellt Stubs von Mountpunkten, auch wenn eine bestimmte Freigabe nicht aktiv gemountet wird.

Auf dieser Seite mit Tipps und Tricks zum CentOS-Wiki erfahren Sie, wie Sie SMB / CIFS-Freigaben bereitstellen können.

Montagespitzen

  • Windows Share = \ mysmb \ share1
  • Unix Dir. = / test / dir1

Idee # 1

 # /etc/auto.master
/test                 /etc/auto.test --timeout=600 --ghost

# /etc/auto.test
dir1         -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/dir1
dir2         -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/dir2

Idee # 2

 # /etc/auto.master
/test                 /etc/auto.test --timeout=600 --ghost

# /etc/auto.test
*            -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/&
slm
quelle
Danke für Ihre Antwort. Bitte beachten Sie meinen Kommentar für lsd.
Phanto
1
Mein Gott ... --ghost sollte Standard sein. Ich bin auf fedora / rhel / centos, es liest die Karte, aber wenn ich in den Ordner gehe, ist nichts da ... Ich hatte dann die verrückte Idee cd "sharename"und es wurde auf magische Weise in den Ordner eingegeben, der lssagt, dass es nicht existiert ... arrgh
Ray Foss
-1

Wenn Sie cifs verwenden, wird empfohlen, auch _netdevParameter zu verwenden .

_netdev Da sich das Dateisystem auf einem Gerät befindet, für das Netzwerkzugriff erforderlich ist, wird verhindert, dass das System versucht, diese Dateisysteme bereitzustellen, bis das Netzwerk auf dem Hostsystem aktiviert wurde.

Gast
quelle
1
Einige Format- und Rechtschreibfehler wurden behoben. Sie sollten wahrscheinlich anhand der Konfiguration aus der Frage als Beispiel darauf hinweisen, wie und wo dieser Parameter abgelegt werden soll.
Leo