Übergabe von UNC-Benutzernamen und -Kennwort in einem UNC-Pfad


23

Ist es möglich, den UNC-Benutzernamen und das Kennwort innerhalb eines UNC-Pfads zu übergeben?

Ähnlich wie FTP und SMB dies unterstützen:

smb://user:pass@destination.com/share
ftp://user:pass@destination.com/share

Ich versuche, einen (Nicht-Domänen-PC-) Dienstzugriff auf einen DFS-Pfad zu erhalten.

Gibt es einen anderen Weg, dies zu umgehen? Ich könnte den PC an die Domäne binden und den Dienst als Domänenbenutzer ausführen, aber was ist, wenn ich Linux verwende?

Antworten:


20

Unter Windows können Sie keine Anmeldeinformationen in UNC-Pfade einfügen. Sie müssen , um sie verwenden net use, runas /netonlyoder wenn die von Windows gefragt. (Wenn Sie über Programmierkenntnisse verfügen, können Sie das SMB-Kennwort als "Domänenanmeldeinformationen" speichern. Dies CredWrite()entspricht dem Aktivieren des Kontrollkästchens "Kennwort speichern " in Windows.)

Unter Linux hängt es vom Programm ab.

  • Gvfs von GNOME akzeptiert die user@hostSyntax, scheint das Kennwort jedoch vollständig zu ignorieren. (Sie können es jedoch vorher im GNOME-Schlüsselring speichern.)

  • smbclientverwendet die gleiche UNC-Syntax wie Windows; Es gibt jedoch eine --authentication-fileOption, aus der Berechtigungsnachweise gelesen werden können.

  • Beide oben genannten Programme verwenden libsmbclient und können die Kerberos-Authentifizierung anstelle von Kennwörtern verwenden: run kinit user@YOUR.DOMAINand use smbclient -k //host/share. Dies ist sicherer als die Kennwortauthentifizierung.

Beachten Sie, dass das Einfügen von Kennwörtern in URIs veraltet ist und Sie sich nicht darauf verlassen sollten, dass sie überall unterstützt werden .


Haben Sie einen Verweis in Bezug auf "das Einfügen von Passwörtern in URIs ist veraltet"?
Alexis Wilke

2
@AlexisWilke RFC 1738 § 3.3 begann damit, dass sie in HTTP nicht zugelassen wurden, RFC 2396 § 3.2.2 hatte ein allgemeineres "nicht empfohlen", und RFC 3986 § 3.2.1 sagt "Verwendung des Formats" Benutzer: Kennwort "in der Benutzerinfo Feld ist veraltet ".
Grawity

14

Sie können dem UNC-Pfad mit ein "Laufwerk" zuordnen net use. Zukünftige Zugriffe sollten die vorhandene Verbindung gemeinsam nutzen

Net Use \\yourUNC\path /user:uname password

Hinweis: Sie müssen keinen Laufwerksbuchstaben angeben


1

Ich denke, der Benutzername und das Kennwort müssen zur Authentifizierung zuerst an den Server übergeben werden, bevor ein Dateizugriff durchgeführt werden kann. Daher muss der Code, der die SMB-Verbindung verarbeitet, in der Lage sein, den Benutzernamen und das Kennwort aus der URL zu analysieren und zu extrahieren. Sie müssen überprüfen, ob dieser Code dieses Format unterstützt oder nicht.

Wenn dies nicht der Fall ist, können Sie diese SMB-Freigabe über SAMBA bereitstellen und Ihr Programm anweisen, diesen "lokalen" Pfad zu verwenden. Sie können den Mount in fstabeine SAMBA-Kennwortdatei einfügen und diese verwenden, um die Benutzeranmeldeinformationen anzugeben. Denken Sie daran, die richtigen Berechtigungen für die Kennwortdatei festzulegen, damit normale Benutzer sie nicht lesen können.

Beachten Sie, dass das Speichern von Kennwörtern im Klartext in Konfigurationsdateien keine gute Praxis ist. Selbst wenn Ihr Programm Kennwörter in URLs verarbeiten kann, sollten Sie die Methode für eingehängte Freigaben in Betracht ziehen.


Ist das fstabnicht eine "Klartext-Konfigurationsdatei"?
Grawity

1
Ja, aber in fstab verweisen Sie auf die Kennwortdatei, anstatt das Kennwort direkt einzugeben. Anschließend können Sie die Kennwortdatei sichern, indem Sie den Besitzer in root und den Modus in 400
ändern

Das ist immer noch eine Klartext-Konfigurationsdatei. Jeder, der physisch auf den Computer zugreift, kann über einen Neustart Root-Berechtigungen erhalten. Desktop-Umgebungen wie XFCE, KDE und Gnome können Anmeldeinformationen in einem Kennwort-Tresor speichern, was wahrscheinlich die bessere Option ist.
Bobpaul

0

Sie können die Anmeldeinformationen in Systemsteuerung / Benutzer / Windows-Anmeldeinformations-Manager hinzufügen, damit die Anmeldeinformationen zwischengespeichert werden. Sie würden den Gerätenamen (server.domain.local) mit dem Domänenbenutzernamen / -kennwort hinzufügen und dann auf die Freigabe zugreifen können, ohne die Anmeldeinformationen erneut einzugeben.


0

Ein Nicht-Domänen-PC sollte sich nicht wirklich für DFS interessieren, für die er kein Abonnement hat oder nicht direkt teilnimmt. Es muss nur ein Freigabepfad angezeigt werden (z. B. Server / Freigabename). Freigabenamen entfernen alle Überlegungen zum Pfad des Host-Dateiservers.

Ehrlich gesagt gibt es sicherere Möglichkeiten, sich bei Freigaben anzumelden als UNC-URI. UNC und URI sind selbst ein Klartext-Kommunikationsprotokoll.
Wenn das eine akzeptable Sicherheit ist, warum nicht einfach eine offene Freigabe ohne Benutzer oder Passwort haben?

Die einfachste sofortige Lösung wäre, den Dienstanmeldeinformationen direkten Zugriff auf die Anmeldung bei der Freigabe zu gewähren (z. B. übereinstimmender Benutzer / Kennwort). Langfristig kann diese nicht so offensichtliche Übereinstimmung dazu führen, dass Sie sich daran erinnern, Berechtigungen zu aktualisieren, wenn sich Änderungen ergeben. Und es ist auch ein Bereich, in dem MS möglicherweise die Art und Weise ändern, in der die Sicherheit erneut Anmeldeinformationen weitergibt und Probleme verursacht.

Langfristig ist es wahrscheinlich am einfachsten, der Netzwerkfreigabe permanent einen lokalen Laufwerksbuchstaben zuzuordnen. Schützen Sie das zugeordnete Laufwerk nur mit Serviceberechtigungen (und entsprechenden Administratoren usw.). Außerdem wird der Freigabename möglicherweise mit & ausgeblendet.

DFS gibt jedoch einen Hinweis auf eine elegantere Lösung. Linux erfordert, dass Netzwerkfreigaben zuerst gemountet werden ... normalerweise als Verzeichnis im Root-Dateisystem, ähnlich wie bei DFS. Mit dem Linux-Befehl mount können Sie eine Anmeldeinformationsdatei für den Benutzernamen und das Kennwort angeben. Dadurch sind sie einfacher zu aktualisieren und sicherer als Befehlszeilenskripte oder fstab (dh Dateisystemtabellen). Ich bin mir ziemlich sicher, dass Windows-Befehlsshells und DFS dasselbe können (schon eine Weile). Es wäre nur ein anderes DFS-System, das für den Ziel-PC privat ist, gemountete Netzwerkfreigaben unter Verwendung gespeicherter Anmeldeinformationen zu integrieren, die von SMB- und Anmeldediensten weitergeleitet werden, anstatt in einem Skript fest codiert und als Klartext-UNC gesendet zu werden.

Überlegen Sie auch, ob dieser Nicht-Domänen-PC langfristig ein Nicht-Domänen-PC bleibt. Kerberos-Anmeldeserver in * NIX Realms können mit Windows AD-Domänen verknüpft werden. Wahrscheinlich, was Sie für ein ernsthaftes Langzeitprojekt mit mehr als ein paar Leuten tun möchten. Auf der anderen Seite ist es wahrscheinlich für die meisten Heimnetzwerk-Situationen zu viel. Wenn Sie DFS jedoch aus einem anderen Grund als aus Gründen der Selbstherausforderung eines Bastlers verwenden, ist dies wahrscheinlich das Beste.


0

Die Anmeldedaten-Speicherantwort von Matt ist die eleganteste für einen modernen Windows-PC. Obwohl nicht angegeben, sollte der Speicher für Anmeldeinformationen für das Dienstkonto verwendet werden. Dies dient sowohl dazu, die Verfügbarkeit des Dienstes sicherzustellen, als auch dazu, dass andere Benutzer, die nicht auf diese Freigabe zugreifen möchten, nicht darauf zugreifen können.

Aber wenn es sich um Windows oder Linux handelt, müssen Sie möglicherweise etwas weiter gehen.

Ein Nicht-Domänen-PC sollte sich nicht wirklich für DFS interessieren, für die er kein Abonnement hat oder nicht direkt teilnimmt. Es muss nur ein Freigabepfad angezeigt werden (z. B. Server / Freigabename). Freigabenamen entfernen alle Überlegungen zum Pfad des Host-Dateiservers.

Ehrlich gesagt gibt es sicherere Möglichkeiten, sich bei Freigaben anzumelden als UNC-URI. UNC und URI sind selbst ein Klartext-Kommunikationsprotokoll.
Wenn das eine akzeptable Sicherheit ist, warum nicht einfach eine offene Freigabe ohne Benutzer oder Passwort haben?

Die einfachste sofortige Lösung wäre, den Dienstanmeldeinformationen direkten Zugriff auf die Anmeldung bei der Freigabe zu gewähren (z. B. übereinstimmender Benutzer / Kennwort). Langfristig kann diese nicht so offensichtliche Übereinstimmung dazu führen, dass Sie sich daran erinnern, Berechtigungen zu aktualisieren, wenn sich Änderungen ergeben. Und es ist auch ein Bereich, in dem MS möglicherweise die Art und Weise ändern, in der die Sicherheit erneut Anmeldeinformationen weitergibt und Probleme verursacht.

Langfristig ist es wahrscheinlich am einfachsten, der Netzwerkfreigabe permanent einen lokalen Laufwerksbuchstaben zuzuordnen. Schützen Sie das zugeordnete Laufwerk nur mit Serviceberechtigungen (und entsprechenden Administratoren usw.). Außerdem wird der Freigabename möglicherweise mit & ausgeblendet.

DFS gibt jedoch einen Hinweis auf eine elegantere Lösung. Linux erfordert, dass Netzwerkfreigaben zuerst gemountet werden ... normalerweise als Verzeichnis im Root-Dateisystem, ähnlich wie bei DFS. Mit dem Linux-Befehl mount können Sie eine Anmeldeinformationsdatei für den Benutzernamen und das Kennwort angeben. Dadurch sind sie einfacher zu aktualisieren und sicherer als Befehlszeilenskripte oder fstab (dh Dateisystemtabellen). Ich bin mir ziemlich sicher, dass Windows-Befehlsshells und DFS dasselbe können (schon eine Weile). Es wäre nur ein anderes DFS-System, das für den Ziel-PC privat ist, gemountete Netzwerkfreigaben unter Verwendung gespeicherter Anmeldeinformationen zu integrieren, die von SMB- und Anmeldediensten weitergeleitet werden, anstatt in einem Skript fest codiert und als Klartext-UNC gesendet zu werden.

Überlegen Sie auch, ob dieser Nicht-Domänen-PC langfristig ein Nicht-Domänen-PC bleibt. Kerberos-Anmeldeserver in * NIX Realms können mit Windows AD-Domänen verknüpft werden. Wahrscheinlich, was Sie für ein ernsthaftes Langzeitprojekt mit mehr als ein paar Leuten tun möchten. Auf der anderen Seite ist es wahrscheinlich für die meisten Heimnetzwerk-Situationen zu viel. Wenn Sie DFS jedoch aus einem anderen Grund als aus Gründen der Selbstherausforderung eines Bastlers verwenden, ist dies wahrscheinlich das Beste.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.