Sichere Möglichkeit zum Mounten einer kennwortgeschützten CIFS-Freigabe in Mac

7

Ich unterhalte ein heterogenes Netzwerk aus Mac und Linux, daher habe ich beschlossen, ein kleines Perl-Skript zu erstellen, um die Bereitstellungsstrategien auf allen Computern zu vereinheitlichen.

Eigentlich habe ich bereits ein funktionierendes Perl-Skript, aber das Passwort scheint Teil der Befehlszeile zu sein, die mir nicht gefällt:

 mount_smbfs -d 755 -f 755 //username_here:[email protected]/cifs_share

Ich habe versucht, die Manpages für mount_smbfs und nsmb.conf zu lesen, bin aber immer noch verwirrt, wie ich vorankommen soll.

Meine Maschinen sind Snow Leopard, Leopard und Lion.

icasimpan
quelle

Antworten:

7

Eine sicherere Lösung als die von SvenW vorgeschlagene und eine, die eher der Vorgehensweise von Apple entspricht, besteht darin, das Kennwort zum Schlüsselbund hinzuzufügen. So würden Sie es für eine AFP-Freigabe tun (Ich gehe davon aus, dass Sie lediglich das durch die Option -r angegebene Protokoll ändern müssen, aber ich habe derzeit keine Möglichkeit, dies mit SMB zu testen. Beachten Sie, dass das Leerzeichen in "afp" ist beabsichtigt und notwendig und ich habe dies nur in einer 10.6-Umgebung verwendet):

sudo security add-internet-password -a "username_here" -D "Network Password" -r "afp " -l "cifs_share" -s "myserver.com" -p "cifs_share" -w "password_here"  -T "/System/Library/CoreServices/NetAuthAgent.app/Contents/MacOS/NetAuthAgent"

Hier ist der relevante Teil der Manpage für den Sicherheitsbefehl :

add-internet-password [-h] [-a account] [-s server] [-w password] [options...] [keychain]
            Add an internet password item.

            -a account      Specify account name (required)
            -c creator      Specify item creator (optional four-character code)
            -C type         Specify item type (optional four-character code)
            -d domain       Specify security domain string (optional)
            -D kind         Specify kind (default is "application password")
            -j comment      Specify comment string (optional)
            -l label        Specify label (if omitted, service name is used as default label)
            -p path         Specify path string (optional)
            -P port         Specify port number (optional)
            -r protocol     Specify protocol (optional four-character SecProtocolType, e.g. "http", "ftp ")
            -s server       Specify server name (required)
            -t authenticationType
                            Specify authentication type (as a four-character SecAuthenticationType, default is "dflt")
            -w password     Specify password to be added
            -A              Allow any application to access this item without warning (insecure, not recommended!)
            -T appPath      Specify an application which may access this item (multiple -T options are allowed)
            -U              Update item if it already exists (if omitted, the item cannot already exist)

            By default, the application which creates an item is trusted to access its data without warning.  You can remove this default access
            by explicitly specifying an empty app pathname: -T "". If no keychain is specified, the password is added to the default keychain.

Dasselbe sollte für eine SMB-Freigabe funktionieren, beachten Sie jedoch, dass der Mechanismus zum Abgleichen von Schlüsselbundeinträgen sehr speziell ist (z. B. das Erfordernis eines ungeraden Leerzeichens im Protokollnamen). Sie müssen also testen und genau angeben, wie Sie das Kennwort speichern. Als ich diesen Ansatz zum ersten Mal verwendete, stellte ich fest, dass es hilfreich war, das Kennwort im Schlüsselbund über die GUI zu erstellen, um die richtigen Parameter zu ermitteln (dh die Freigabe im Finder bereitzustellen und das Kontrollkästchen zu aktivieren, um die Authentifizierungsdaten im zu speichern Schlüsselbund) und arbeiten Sie rückwärts, indem Sie den resultierenden Eintrag im Schlüsselbund untersuchen.

Wie von SvenW festgestellt, muss der Schlüsselbund entsperrt werden, damit dieser Ansatz funktioniert. Dies sollte jedoch automatisch geschehen, wenn sich der Benutzer anmeldet, und sollte aufgrund Ihrer Beschreibung kein Problem darstellen. Ich möchte auch bestätigen, dass Kerberos zwar in 10.5 und 10.6 funktioniert, in 10.7 jedoch problematisch ist.

Joe Carroll
quelle
danke für Ihren Vorschlag. Ich würde das in Betracht ziehen, wenn wir afp später verwenden. Im Moment vereinfacht es mich, den Benutzernamen und das Passwort zu haben.
icasimpan
Es funktioniert mit -r "smb ". Eine Möglichkeit, solche Dinge herauszufinden, besteht darin, zu rennen security dump-keychain.
Vebjorn Ljosa
5

Fügen Sie eine ~ / Library / Preferences / nsmb.conf-Datei mit dem folgenden Inhalt in das Home-Verzeichnis des Benutzers ein, für den Sie den Mount durchführen möchten:

[myserver.com]
username=username_here
password=password_here

Danach können Sie einfach tun

mount -t smbfs -o -d=755,-f=755 //myserver.com/cifs_share /mountpoint 
Sven
quelle
Das Speichern eines Passworts ist immer noch nicht so toll. Wissen Sie, ob OSX Kerberos macht? Oder gibt es eine Möglichkeit, die Anmeldeinformationen im Schlüsselbund zu speichern?
Zoredache
Für die Verwendung des Schlüsselbunds muss ein Benutzer angemeldet und sein Schlüsselbund entsperrt sein. Bis zu 10.6 Kerberos funktionierte, aber ich habe es nie geschafft, es mit SMB auf 10.7 zum Laufen zu bringen, nachdem Apple seinen eigenen CIFS-Client eingeführt und von MIT Kerberos zu Heimdal gewechselt hatte.
Sven
Auf BSD, von dem mount_smbfs stammt, können Sie ein vorverschlüsseltes (besser: verschlüsseltes) Kennwort in der conf-Datei speichern, aber smbcrypt fehlt mindestens in 10.7.
Sven
@SvenW, ich habe Ihren Ansatz ausprobiert und stattdessen /etc/nsmb.conf verwendet, da es sich um die globale Konfigurationsdatei handelt. Es hat super funktioniert! Vielen Dank. +1 für Sie :)
icasimpan
@SvenW Ich dachte es funktioniert. Ich habe sogar versucht, es auf ~ / Library / Preferences / nsmb.conf zu setzen, und es wurde immer noch nach einem Passwort gefragt. Entschuldigung, ich war früher verwirrt, als ich andere Freigaben vom selben Server mit derselben Authentifizierung hatte :(
icasimpan
1

Für mich ging es darum zu sehen, was sich in meinem Schlüsselbund befand

Geben Sie hier die Bildbeschreibung ein

und das mit meiner auto_smbKarte abgleichen ...

/../Volumes/ServiceData -fstype=smbfs,soft ://home._smb._tcp.local/ServiceData

mralexgray
quelle
1
Ich habe alle möglichen Kombinationen in macOS High Sierra ausprobiert und es wird nicht nur dann nach dem Kennwort gefragt, wenn die Freigabe bereits vom Finder bereitgestellt wurde. Es treibt mich in den Wahnsinn.
Michele Dall'Agata