web-dev-qa-db-fra.com

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

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

Semblable à la façon dont FTP et SMB supportent ceci:

smb://user:[email protected]/share
ftp://user:[email protected]/share

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

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

22
Kvad

Sous Windows, vous ne pouvez pas placer les informations d'identification dans les chemins UNC. Vous devez les fournir en utilisant Net Use, runas /netonly ou à la demande de Windows. (Si vous avez des compétences en programmation, vous pouvez stocker le mot de passe SMB en tant que "justificatif de domaine" à l'aide de CredWrite(), ce qui revient à cocher la case "Mémoriser le mot de passe" sous Windows.)

Sous Linux, cela dépend du programme.

  • Les fichiers Gvfs de GNOME acceptent la syntaxe user@Host, mais semblent ignorer complètement le mot de passe. (Cependant, vous pouvez le stocker auparavant dans GNOME Keyring.)

  • smbclient utilise la même syntaxe UNC que Windows; Cependant, il dispose d'une option --authentication-file à partir de laquelle les informations d'identification peuvent être lues.

  • Les deux programmes ci-dessus utilisent libsmbclient et peuvent utiliser l'authentification Kerberos à la place des mots de passe: exécutez kinit [email protected] et utilisez smbclient -k //Host/share. Ceci est plus sécurisé que l'authentification par mot de passe.

Notez que l'insertion de mots de passe dans des URI est obsolète et que vous ne devez pas compter sur sa prise en charge , où que vous soyez .

19
grawity

Vous pouvez mapper un "lecteur" sur le chemin UNC en utilisant Net Use. Les futurs accès doivent partager la connexion existante

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

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

14
uSlackr

Je pense que le nom d'utilisateur et le mot de passe doivent être transmis au serveur pour l'authentification avant tout accès au fichier. Le code manipulant la connexion SMB doit donc pouvoir analyser et extraire le nom d'utilisateur et 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 la monture dans fstab et 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 dans le fichier de mots de passe afin que les utilisateurs normaux ne puissent pas le lire.

Notez qu'il est déconseillé de stocker les mots de passe en texte clair dans les fichiers de configuration. Ainsi, même si votre programme peut gérer le mot de passe dans une URL, vous devez envisager la méthode de partage montée.

1
billc.cn

Un PC n'appartenant pas à un domaine ne devrait pas vraiment se soucier des DFS auxquels il ne souscrit pas ou ne participe pas directement. Il suffit de voir un chemin de partage (serveur/nom de partage). Les noms de prénom suppriment toutes les considérations relatives au chemin du serveur de fichiers hôte.

Honnêtement, il existe des moyens plus sûrs de se connecter à des partages que l’URI UNC. UNC et URI sont eux-mêmes un protocole de communication en texte clair.
S'il s'agit d'une sécurité acceptable ... pourquoi ne pas simplement avoir un partage ouvert sans utilisateur ni mot de passe?

La solution immédiate la plus simple consisterait à donner aux informations d'identification du service un accès direct pour se connecter au partage (par exemple, un mot de passe/utilisateur correspondant). À long terme, une correspondance moins évidente peut vous obliger à vous rappeler de mettre à jour les autorisations lorsque les choses changent. Et c’est également un domaine dans lequel MS pourrait modifier la façon dont la sécurité transmet les informations d’identité et casser des choses.

A long terme, la meilleure solution consiste probablement à mapper en permanence une lettre de lecteur local sur le partage réseau. Protégez le lecteur mappé avec des autorisations uniquement pour le service (et les administrateurs appropriés, etc.), et sharename pourrait être masqué avec le signe &.

Mais DFS laisse entrevoir une solution plus élégante. Linux requiert que les partages réseau soient montés en premier ... généralement sous la forme d'un répertoire dans le système de fichiers racine, d'une manière très semblable à celle de DFS. La commande Linux mount 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és que les scripts de ligne de commande ou fstab (c'est-à-dire la table du système de fichiers). Je suis à peu près sûr que les shells de commande Windows et DFS peuvent faire la même chose (cela fait longtemps). Ce serait simplement un système privé DFS différent du PC cible d'intégrer des partages réseau montés à l'aide des informations d'identification stockées transmises par SMB et des services de connexion plutôt que codés en dur dans un script et envoyés en texte clair UNC.

Déterminez également si ce PC non-domaine restera un PC non-domaine à long terme. Les serveurs de connexion Kerberos situés dans * NIX Realms peuvent être liés à des domaines Windows AD. Probablement ce que vous voulez faire pour tout projet sérieux à long terme impliquant plus que quelques personnes. D'autre part, c'est probablement trop cher pour la plupart des situations de réseau domestique. Cependant, si vous utilisez DFS pour une bonne raison autre que celle de passionné, il est probablement préférable.

0
Curious

La réponse de stockage des identifiants de Matt est la plus élégante pour un PC Windows moderne. Bien que non indiqué, le stockage des identifiants utilisé doit être pour le compte de service. C’est à la fois pour garantir la disponibilité du service et pour empêcher tout autre utilisateur que vous ne souhaitez pas accéder à ce partage (par exemple, de mémoriser les informations d’identité erronées ajoutées sous un compte erroné).

Mais si vous utilisez Windows ou Linux, vous devrez peut-être aller un peu plus loin.

Un PC n'appartenant pas à un domaine ne devrait pas vraiment se soucier des DFS auxquels il ne souscrit pas ou ne participe pas directement. Il suffit de voir un chemin de partage (serveur/nom de partage). Les noms de prénom suppriment toutes les considérations relatives au chemin du serveur de fichiers hôte.

Honnêtement, il existe des moyens plus sûrs de se connecter à des partages que l’URI UNC. UNC et URI sont eux-mêmes un protocole de communication en texte clair.
S'il s'agit d'une sécurité acceptable ... pourquoi ne pas simplement avoir un partage ouvert sans utilisateur ni mot de passe?

La solution immédiate la plus simple consisterait à donner aux informations d'identification du service un accès direct pour se connecter au partage (par exemple, un mot de passe/utilisateur correspondant). À long terme, une correspondance moins évidente peut vous obliger à vous rappeler de mettre à jour les autorisations lorsque les choses changent. Et c’est également un domaine dans lequel MS pourrait modifier la façon dont la sécurité transmet les informations d’identité et casser des choses.

A long terme, la meilleure solution consiste probablement à mapper en permanence une lettre de lecteur local sur le partage réseau. Protégez le lecteur mappé avec des autorisations uniquement pour le service (et les administrateurs appropriés, etc.), et sharename pourrait être masqué avec le signe &.

Mais DFS laisse entrevoir une solution plus élégante. Linux requiert que les partages réseau soient montés en premier ... généralement sous la forme d'un répertoire dans le système de fichiers racine, d'une manière très semblable à celle de DFS. La commande Linux mount 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és que les scripts de ligne de commande ou fstab (c'est-à-dire la table du système de fichiers). Je suis à peu près sûr que les shells de commande Windows et DFS peuvent faire la même chose (cela fait longtemps). Ce serait simplement un système privé DFS différent du PC cible d'intégrer des partages réseau montés à l'aide des informations d'identification stockées transmises par SMB et des services de connexion plutôt que codés en dur dans un script et envoyés en texte clair UNC.

Déterminez également si ce PC non-domaine restera un PC non-domaine à long terme. Les serveurs de connexion Kerberos situés dans * NIX Realms peuvent être liés à des domaines Windows AD. Probablement ce que vous voulez faire pour tout projet sérieux à long terme impliquant plus que quelques personnes. D'autre part, c'est probablement trop cher pour la plupart des situations de réseau domestique. Cependant, si vous utilisez DFS pour une bonne raison autre que celle de passionné, il est probablement préférable.

0
Curious

Vous pouvez ajouter les informations d'identification dans le Panneau de configuration/Utilisateurs/Windows Credential Manager afin que les informations d'identification soient mises en cache. Vous ajouteriez le nom de périphérique (server.domain.local) avec le nom d'utilisateur/mot de passe du domaine. Vous devriez alors pouvoir accéder au partage sans fournir à nouveau les informations d'identification.

0
Matt