Passer un nom d'utilisateur et un mot de passe UNC dans un chemin UNC


23

Est-il possible de transmettre le nom d'utilisateur et le mot de passe UNC dans un chemin UNC?

Similaire à la façon dont FTP et SMB prennent en charge ceci:

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

J'essaye d'obtenir un accès de service (hors domaine PC) à un chemin DFS.

Y a-t-il une autre solution? Je pourrais lier le PC au domaine et exécuter le service en tant qu'utilisateur de domaine, mais que faire si j'utilisais Linux?

Réponses:


20

Sous Windows, vous ne pouvez pas placer d'informations d'identification dans les chemins UNC. Vous devez leur fournir l' aide net use, runas /netonlyou lorsqu'on lui a demandé par Windows. (Si vous avez des compétences en programmation, vous pouvez stocker le mot de passe SMB en tant que "informations d'identification de domaine" à l'aide CredWrite(), ce qui revient à cocher la case "Mémoriser le mot de passe" dans Windows.)

Sous Linux, cela dépend du programme.

  • Les Gvfs de GNOME acceptent la user@hostsyntaxe, mais semblent ignorer complètement le mot de passe. (Cependant, vous pouvez au préalable le stocker dans le trousseau de clés GNOME.)

  • smbclientutilise la même syntaxe UNC que Windows; cependant, il a une --authentication-fileoption à partir de laquelle les informations d'identification peuvent être lues.

  • Les deux programmes ci-dessus utilisent libsmbclient et peuvent utiliser l'authentification Kerberos au lieu des mots de passe: exécutez kinit user@YOUR.DOMAINet utilisez smbclient -k //host/share. C'est plus sûr que l'authentification par mot de passe.

Notez que la mise en place de mots de passe dans des URI est obsolète et que vous ne devez pas compter sur sa prise en charge n'importe où .


Avez-vous une référence en ce qui concerne "la dépréciation des mots de passe dans les URI"?
Alexis Wilke

2
@AlexisWilke RFC 1738 § 3.3 a commencé par ne pas les autoriser dans HTTP, RFC 2396 § 3.2.2 avait un plus général "non recommandé", et RFC 3986 § 3.2.1 dit "Utilisation du format" utilisateur: mot de passe "dans le userinfo champ est obsolète ".
grawity

14

Vous pouvez mapper un "lecteur" sur le chemin UNC à l'aide de net use. Les futurs accès devraient partager la connexion existante

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

Remarque: vous n'avez pas besoin de spécifier une lettre de lecteur


1

Je pense que le nom d'utilisateur et le mot de passe doivent être transmis au serveur pour l'authentification avant que tout accès au fichier puisse être effectué, donc le code gérant la connexion SMB doit être capable d'analyser et d'extraire le nom d'utilisateur et le mot de passe de l'URL. Vous devrez vérifier si ce code prend en charge ce format ou non.

Si ce n'est pas le cas, vous pouvez monter ce partage SMB via SAMBA et demander à votre programme d'utiliser ce chemin "local". Vous pouvez placer le montage dans fstabet utiliser un fichier de mot de passe SAMBA pour fournir les informations d'identification de l'utilisateur. N'oubliez pas de définir les autorisations appropriées sur le fichier de mots de passe afin que les utilisateurs normaux ne puissent pas le lire.

Notez que c'est une mauvaise pratique de stocker les mots de passe en texte clair dans les fichiers de configuration, donc même si votre programme peut gérer le mot de passe dans l'URL, vous devriez considérer la méthode de partage monté.


N'est-ce fstabpas un "fichier de configuration en texte clair"?
grawity

1
Oui, mais dans fstab vous vous référez au fichier de mot de passe au lieu d'inclure directement le mot de passe. Ensuite, vous pouvez sécuriser le fichier de mot de passe en changeant le propriétaire en root et le mode en 400.
billc.cn

C'est toujours un fichier de configuration en texte clair. Toute personne disposant d'un accès physique à la machine peut avoir des autorisations root via le redémarrage. Les environnements de bureau tels que XFCE, KDE et Gnome peuvent stocker les informations d'identification dans un coffre de mots de passe, ce qui est probablement la meilleure option.
bobpaul

0

Vous pouvez ajouter les informations d'identification dans Panneau de configuration / Utilisateurs / Gestionnaire d'informations d'identification Windows afin que les informations d'identification soient mises en cache. Vous devez ajouter le nom de l'appareil (server.domain.local) avec le nom d'utilisateur / mot de passe du domaine, puis vous devriez pouvoir accéder au partage sans fournir à nouveau les informations d'identification.


0

Un PC hors domaine ne devrait pas vraiment se soucier de DFS auquel il ne s'abonne pas ou ne participe pas directement. Il a juste besoin de voir un chemin de partage (c'est-à-dire serveur / nom de partage). Sharenames supprime toutes les considérations relatives au chemin du serveur de fichiers hôte.

Honnêtement, il existe des moyens plus sécurisés de se connecter aux partages que l'URI UNC. UNC et URI sont eux-mêmes un protocole de communication en texte clair.
Si c'est une sécurité acceptable ... pourquoi ne pas simplement avoir un partage ouvert sans aucun utilisateur ou mot de passe?

La solution immédiate la plus simple serait de donner aux informations d'identification du service un accès direct à la connexion au partage (par exemple, utilisateur / mot de passe correspondant). À long terme, cette correspondance pas si évidente pourrait faire en sorte de se souvenir de mettre à jour les autorisations lorsque les choses changent. Et c'est également un domaine où MS pourrait changer la façon dont la sécurité transmet les informations d'identification et casser les choses.

À long terme, la meilleure chose à faire est probablement de mapper en permanence une lettre de lecteur local au partage réseau. Protégez le lecteur mappé avec des autorisations uniquement pour le service (et les administrateurs appropriés, etc.), plus le nom de partage peut être masqué avec un &.

Mais DFS donne un indice sur une solution plus élégante. Linux nécessite que les partages réseau soient montés en premier ... généralement sous forme de répertoire dans le système de fichiers racine de manière très similaire à DFS. La commande de montage Linux permet de spécifier un fichier d'informations d'identification pour le nom d'utilisateur et le mot de passe, ce qui les rend plus faciles à mettre à jour et plus sécurisées que le script de ligne de commande ou fstab (c'est-à-dire la table du système de fichiers). Je suis presque sûr que les shells de commandes Windows et DFS peuvent faire la même chose (cela fait un moment). Il s'agirait simplement d'un système DFS différent privé du PC cible pour incorporer des partages réseau montés en utilisant des informations d'identification stockées transmises par SMB et des services de connexion plutôt que codées en dur dans un script et envoyées en texte clair UNC.

Considérez également si ce PC non-domaine restera un PC hors domaine à long terme. Les serveurs de connexion Kerberos dans * NIX Realms peuvent être liés aux domaines Windows AD. Probablement ce que vous voulez faire pour tout projet sérieux à long terme impliquant plus de quelques personnes. D'un autre côté, c'est probablement trop pour la plupart des situations de réseau domestique. Cependant, si vous utilisez DFS pour une bonne raison autre que l'auto-défi amateur, c'est probablement le meilleur.


0

La réponse de stockage des informations d'identification de Matt est la plus élégante pour un PC Windows moderne. Bien que cela ne soit pas indiqué, le stockage des informations d'identification utilisé doit être destiné au compte de service. C'est à la fois pour garantir la disponibilité du service et pour que tout autre utilisateur auquel vous ne souhaitez pas accéder à ce partage ne puisse pas (par exemple, n'oubliez pas de nettoyer les informations d'identification erronées ajoutées sous un mauvais compte).

Mais s'il s'agit de son héritage Windows ou Linux, vous devrez peut-être aller légèrement plus loin.

Un PC hors domaine ne devrait pas vraiment se soucier de DFS auquel il ne s'abonne pas ou ne participe pas directement. Il a juste besoin de voir un chemin de partage (c'est-à-dire serveur / nom de partage). Sharenames supprime toutes les considérations relatives au chemin du serveur de fichiers hôte.

Honnêtement, il existe des moyens plus sécurisés de se connecter aux partages que l'URI UNC. UNC et URI sont eux-mêmes un protocole de communication en texte clair.
Si c'est une sécurité acceptable ... pourquoi ne pas simplement avoir un partage ouvert sans aucun utilisateur ou mot de passe?

La solution immédiate la plus simple serait de donner aux informations d'identification du service un accès direct à la connexion au partage (par exemple, utilisateur / mot de passe correspondant). À long terme, cette correspondance pas si évidente pourrait faire en sorte de se souvenir de mettre à jour les autorisations lorsque les choses changent. Et c'est également un domaine où MS pourrait changer la façon dont la sécurité transmet les informations d'identification et casser les choses.

À long terme, la meilleure chose à faire est probablement de mapper en permanence une lettre de lecteur local au partage réseau. Protégez le lecteur mappé avec des autorisations uniquement pour le service (et les administrateurs appropriés, etc.), plus le nom de partage peut être masqué avec un &.

Mais DFS donne un indice sur une solution plus élégante. Linux nécessite que les partages réseau soient montés en premier ... généralement sous forme de répertoire dans le système de fichiers racine de manière très similaire à DFS. La commande de montage Linux permet de spécifier un fichier d'informations d'identification pour le nom d'utilisateur et le mot de passe, ce qui les rend plus faciles à mettre à jour et plus sécurisées que le script de ligne de commande ou fstab (c'est-à-dire la table du système de fichiers). Je suis presque sûr que les shells de commandes Windows et DFS peuvent faire la même chose (cela fait un moment). Il s'agirait simplement d'un système DFS différent privé du PC cible pour incorporer des partages réseau montés en utilisant des informations d'identification stockées transmises par SMB et des services de connexion plutôt que codées en dur dans un script et envoyées en texte clair UNC.

Considérez également si ce PC non-domaine restera un PC hors domaine à long terme. Les serveurs de connexion Kerberos dans * NIX Realms peuvent être liés aux domaines Windows AD. Probablement ce que vous voulez faire pour tout projet sérieux à long terme impliquant plus de quelques personnes. D'un autre côté, c'est probablement trop pour la plupart des situations de réseau domestique. Cependant, si vous utilisez DFS pour une bonne raison autre que l'auto-défi amateur, c'est probablement le meilleur.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.