Help and Support
 

powered byLive Search

Isolation d'utilisateur FTP utilisant Active Directory utilisant Visual C#

Auteur: Bart De Smet MVP
Numéro d'article:555205
Dernière mise à jour:jeudi 7 octobre 2004
Version:1.0

Résumé

IIS 6.0 contient une nouvelle fonctionnalité appelée isolation FTP d'utilisateur qui empêche utilisateurs d'accéder au dossier de base d'un autre utilisateur. Sans l'isolation d'utilisateur, il est possible de se connecter à un site FTP et d'accéder un utilisateur au dossier d'un autre utilisateur en utilisant le cd. commande dans les outils FTP. Que l'utilisateur pu était capable (lorsque sécurité être au moins définie en haut de droit par le paramètre) de lire les contenus du dossier de tout l'utilisateur bien que l'utilisateur ne être pas capable d'écrire dans le dossier de tout l'utilisateur.
 
3 modi différent est pris en charge :
- Aucune isolation qui provoque utilisateurs être capables de traverser dans des dossiers d'autres utilisateurs.
- Isolation basée sur des dossiers. Un dossier FTP racine est dans ce cas configuré et chaque utilisateur dispose d'un sous-dossier dédié, isolé.
- Isolation basée sur Active Directory. Les paramètres FTP de l'utilisateur sont stockés avec cette option en tant qu'attributs de l'objet utilisateur correspondant dans Active Directory. Un big deal de souplesse est possible pour utiliser cette option.
 
Cet article traite d'isolation d'utilisateur FTP utilisant Active Directory et suppose que vous disposez de connaissance d'Active Directory de base et avez configuré un domaine Active Directory dans votre entreprise.

Retour au début

Créez le site FTP nouvel avec isolation d'utilisateur Active Directory

1 Accédez au Gestionnaire de services IIS utilisant sur OK Démarrait, Exécutait, inetmgr.
2 Accédez à l'ordinateur droit dans la structure arborescente.
3 Cliquez avec le bouton droit sur le dossier site FTP et cliquez sur Nouveau, FTP Siteà
4 Cliquait sur Suivant et vous fournissez un nom pour le nouveau site FTP. De cliquer à nouveau sur Suivant.
5 Spécifiez l'IP-address et portez des paramètres pour le nouveau site FTP. Pour plus d'informations sur cela, reportez-vous aux fichiers aide IIS. De cliquer sur Suivant pour continuer.
6 Vous choisissez maintenant la dernière option : "vous Isolez utilisateurs utilisant Active Directory" et cliquez sur Suivant.
7 Fournissez l'information d'identification d'utilisateur du compte de domaine utilisé pour extraire les paramètres Active Directory pendant que le service FTP est en cours d'exécution pour lire les attributs de l'utilisateur. Comme une méthode conseillée en matière de sécurité, comptait l'utilisation, un low-privileged. Dans la zone de texte de domaine, fournissez le nom de domaine de base ne pas le nom de domaine complet. Remarque : si le mot de passe du compte utilisé est modifié, les paramètres FTP devront être mis à jour pour refléter les modifications. De cliquer sur Suivant.
8 Confirmez le mot de passe et cliquez sur OK.
9 Définissez les autorisations sur les dossier FTP. Si vous voulez qu'utilisateurs soient capables de télécharger des fichiers vers leurs dossiers, graduation deux les options de de lecture et écriture. De cliquer sur Suivant.
10. Cliquez sur Terminer pour terminer l'installation de site FTP.

Retour au début

Explication d'isolation d'utilisateur FTP utilisant Active Directory

L'isolation d'utilisateur basée sur Active Directory est le choix recommandé pour héberger les fournisseurs qui doivent et les sociétés qui doivent gérer une grande quantité de dossier FTP d'utilisateur. En gros le dossier de base de l'utilisateur est déterminé sur l'authentification en interrogeant les attributs msIIS-FTPRoot et msIIS-FTPDir de l'objet Active Directory utilisateur. La concaténation des valeurs msIIS-FTPRoot et msIIS-FTPDir entraîne le chemin d'accès au dossier de base de l'utilisateur.
 
Un exemple se présente comme suit :
    msIIS-FTPRoot = D:\FTP Users
    msIIS-FTPDir = \JohnSmith
Cela entraînera "D:\FTP Users\JohnSmith" comme le dossier de base pour l'utilisateur. Notez qu'il est également possible d'indiquer un chemin UNC comme la valeur msIIS-FTPRoot pour relier vers un autre serveur, ex un serveur de fichiers sur les serveurs LAN.
 
Cette souplesse vous permet de modifier le dossier racine de l'utilisateur à tout moment d'avoir sans toucher la configuration du serveur FTP par changer simplement l'attribut msIIS-FTPRoot dans Active Directory pour l'utilisateur en question. Comme manipulation Active Directory est assez simple, il est en utilisant des technologies différentes (VBScript, .NET Framework) possible de modifier les paramètres pour des utilisateurs différents dans un moyen rapide. Par conséquent il est relativement simple de déplacer les dossier FTP des utilisateurs vers un autre emplacement en mettant simplement à jour leur attribut msIIS-FTPRoot dans Active Directory.
 
Remarques :
1 L'information qui est extraite d'Active Directory est mise en cache par le service FTP pendant 10 minutes. Il est possible de modifier cette valeur par défaut utilisant l'entrée de Registre DsCacheRefreshSecs. Soyez prudent lorsque vous décidez de ce faire depuis que modifications de Registre apportées peuvent entraîner le dommage à votre système.
2 Si vous utilisez une implémentation Active Directory Windows 2000 Server sur votre réseau, vous devrez étendre le schéma avec les attributs msIIS-FTPRoot et msIIS-FTPDir de l'objet utilisateur. Des extensions de schéma ne peuvent pas être annulées, peuvent donc être prudentes lorsque vous souhaitez cela effectuer et consulter l'administrateur de domaine pour les droits nécessaires.
3 L'utilisateur doit posséder des droits sur le dossier spécifié pour avoir l'accès à il. Si l'utilisateur ne dispose pas des droits besoin eus des droits ou si le chemin d'accès n'est pas valide, l'accès sera refusé. Si vous rencontrez des problèmes avec cela vérifiez la sécurité au niveau de partages (si vous utilisez un UNC-path pendant le paramètre Configurer msIIS-FTPRoot) et le niveau du système de fichiers (listes de contrôle d'accès NTFS).

Retour au début

Activez un utilisateur pour l'accès FTP par script

Pour définir d'un dossier de base pour un script utilisateur utilisant, suivez la procédure suivante :
1 Ouvrez une fenêtre d'invite de commandes.
2 Vous utilisez /setadprop iisftp.vbs/ ? Pour afficher l'information de syntaxe du script iisftp.vbs.
3 Déterminez le dossier de base de l'utilisateur et le fractionnez dans un dossier racine et un dossier utilisateur. Le dossier utilisateur s'agit généralement de quelque chose similaire à \JohnSmith simplement alors que le dossier racine est le chemin d'un dossier local ou un chemin d'accès UNC contenant les dossiers des utilisateurs. J'utiliserai l'exemple suivant :
    De dossier racine : \\fileserver\ftproot
    De dossier utilisateur : \JohnSmith
4 Appliquez les paramètres pour l'utilisateur en exécutant les commandes suivantes :
    /setadprop \\fileserver\ftproot JohnSmith FTPRoot iisftp.vbs
    /setadprop \JohnSmith JohnSmith FTPDir iisftp.vbs
 
Important : vous n'oubliez pas the\ devant la valeur FTPDir. Doit la concaténation de la valeur du dossier racine et la valeur du dossier utilisateur entraîner un chemin d'accès valide.
 
Si vous avez défini un utilisateur en cela effectuant, vérifiez si vous pouvez vous connecter dans le dossier de l'utilisateur avec FTP. Vous pouvez donc utiliser un ftp.exe de commande de ligne de commande, un navigateur ou une application FTP cliente.

Retour au début

Activez un utilisateur pour l'accès FTP en utilisant C#

Vous pouvez activer un utilisateur pour FTP en utilisant le code managé également. Cela a pu être utile lorsque vous écrivez une application à configurer des compte d'utilisateur et voulez incorporer l'accès FTP également. C# a pu être également utile si vous mettez une grande série d'utilisateurs à niveau pour disposer d'un dossier FTP sur le système. Le code de base (dans une application console) se présente comme suit :
 
utiliser chaîne Système;
utiliser System.DirectoryServices;
utiliser System.Reflection;
utiliser System.Text;
 
classez EnableFTP
{
    Main (argument [] de chaîne) statique void publique
    {
        Si (< 2 args.Length)
        {
            Console.WriteLine("Usage: {0} <user> <rootFolder> [<domain>]", Assembly.GetExecutingAssembly().GetName().Name);)
            renvoyez;
        }
 
        Domaine de chaîne = null;
        Si ( args.Length == 3 )
            domaine = argument [2];
        autre
            domaine = Environment.GetEnvironmentVariable("USERDNSDOMAIN");
 
        Si ( domaine == null| domaine == String.Empty )
        {
            Console.WriteLine (" Aucun domaine valide étant recherché "). (" Spécifie le domaine complet nom DNS comme le paramètre tiers ");
            renvoyez;
        }
 
        Vous dc chaînez = GetDC(domain);
        Vous LDAP chaînez = String.Format("LDAP://{0}/{1}",domain,dc);
 
        Connexion de chaîne = argument [0];
        Vous rootFolder chaînez = argument [1];
 
        Requête de chaîne = "(, login) String.Format("(&(samAccountName={0})(objectClass=user)) "
        Au sujet de SearchResult = null;
        essayez
        {
            Racinait DirectoryEntry = DirectoryEntry(ldap) nouveau;
            Src DirectorySearcher = DirectorySearcher nouveau (racine, requête);
            au sujet de = src.FindOne();
        }
        interceptez (Exception)
        {
            Console.WriteLine("Cannot connect to domain {0}", domain);
            renvoyez;
        }
 
        Si ( au sujet de ! = null )
        {
            Vous usrFolder chaînez =\\ + connexion;
            Utilisateur DirectoryEntry = res.GetDirectoryEntry();
            .Value user.Properties [" msIIS-FTPRoot "] = rootFolder;
            .Value user.Properties [" msIIS-FTPDir "] = usrFolder;
            user.CommitChanges();
            Console.WriteLine("FTP home directory for {0}: {1}{2}", login,rootFolder,usrFolder);
        }
        autre
            Console.WriteLine ("utilisateur introuvable {0}", connexion);
    }

    Chaîne statique privée GetDC(string domain)
    {
        Sb StringBuilder = StringBuilder(domain) nouveau;
        sb.Replace(".",",DC=");
        sb.Insert(0,"DC=");
        renvoyez sb.ToString();
    }
}
 
Remarque : si vous essayez de cela compiler dans Visual Studio .NET 2003, vous devrez ajouter une référence à assembly System.DirectoryServices.dll dans l'explorateur de solution.
 
L'utilisation de la commande JohnSmith "D:\FTP Users" EnableFTP.exe est assez simple ex
 
Cet exemple peut être étendu si vous souhaitez activer tous les utilisateurs d'unités d'organisation par exemple. Il est en utilisant la classe DirectorySearcher possible de récupérer tous les objets utilisateur en utilisant le "(objectClass=user) " vous interrogez et utiliser par la méthode FindAll sur l'instance de classe pour extraire les résultats. Davantage information sur Active Directory de programmation en C# de est trouvée dans le KIT DE DÉVELOPPEMENT (recherchait System.DirectoryServices) .NET Framework SDK.

Retour au début

Ressources supplémentaires

Internet Information Services (IIS) 6.0 Resource Kit
MSDN - System.DirectoryServices Namespace (.NET Framework Class Library)
Hosting Multiple FTP Sites with FTP User Isolation

Retour au début


Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
?Microsoft Internet Information Services 6.0
?Microsoft Visual C# .NET 2003 Standard Edition

Retour au début

Traduction automatiqueTRADUCTION AUTOMATIQUE : Cet article technique a été traduit par un système automatique, c'est-à-dire sans aucune intervention humaine. Microsoft propose ce type d?articles en complément de ceux traduits par des traducteurs professionnels. Ces articles sont destinés principalement aux utilisateurs ne comprenant pas l'anglais en leur proposant, en complément, une version française de l?information technique fournie dans la version américaine et originale de l?article. Pour plus de détails, veuillez consulter la page http://support.microsoft.com/gp/mtdetails. Attention : Il est possible que certaines parties de l?article ne soient pas traduites par le système automatique et qu?elles soient restées rédigées en anglais. Microsoft ne garantit pas la qualité linguistique des traductions et ne peut être tenu responsable d?aucun problème, direct ou indirect, dû à une quelconque erreur de traduction du contenu ou de son utilisation par les utilisateurs.
La version anglaise de cet article est la suivante: 555205 (http://support.microsoft.com/kb/555205/en-us/)

Retour au début

Community Solutions ContentEXCLUSION DE RESPONSABILITÉ DE COMMUNITY SOLUTIONS
Clause limitative de responsabilité MICROSOFT CORPORATION ET/ OU SES FOURNISSEURS RESPECTIFS NE GARANTISSENT EN AUCUNE FACON LE CARACTERE ADAPTE, FIABLE OU EXACT DES INFORMATIONS ET ELEMENTS GRAPHIQUES CONNEXES. L?ENSEMBLE DE CES INFORMATIONS ET ELEMENTS GRAPHIQUES CONNEXES EST FOURNI "EN L?ETAT", SANS GARANTIE DE QUELQUE NATURE QUE CE SOIT. MICROSOFT CORPORATION ET/ OU SES FOURNISSEURS RESPECTIFS EXLUENT EXPRESSEMENT TOUTES GARANTIES ET CONDITIONS SUR CES INFORMATIONS ET ELEMENTS GRAPHIQUES CONNEXES, ET NOTAMMENT DE TOUTES GARANTIES IMPLICITES QUANT A LEUR CONFORMITE A LEUR DESTINATION COMMERCIALE, A LEUR ADEQUATION A UN BUT DETERMINE, AU RESPECT DES REGLES DE L?ART, A L?EXISTENCE D?UN DROIT DE PROPRIETE ET D?ABSENCE DE CONTREFACON. VOUS VOUS ENGAGEZ EN PARTICULIER A CE QUE NI MICROSOFT NI SES FOURNISSEURS NE SOIENT EN AUCUN CAS TENUS POUR RESPONSABLES DE TOUT DOMMAGE DIRECT, INDIRECT, PUNITIF, INCIDENT, SPECIAL, OU ACCESSOIRE, NI REDEVABLE DE DOMMAGES ET INTERETS QUELS QU?ILS SOIENT, Y COMPRIS, SANS LIMITATION AUCUNE, DE TOUTE INDEMNISATION POUR PERTE DE DONNEES OU DE PROFIT OU POUR IMPOSSIBILITE D?UTILISATION, RESULTANT DE L?UTILISATION OU DE L?IMPOSSIBILITE D?UTILISATION DES INFORMATIONS OU ELEMENTS GRAPHIQUES CONNEXES TELS QUE VISES AUX PRESENTES, QUE CETTE ACTION SOIT CONTRACTUELLE OU DELICTUELLE, FONDEE SUR LA RESPONSABILITE SANS FAUTE OU SUR TOUT AUTRE MOTIF, ET MEME SI MICROSOFT OU L?UN QUELCONQUE DE SES FOURNISSEURS AVAIT ETE AVISE AU PREALABLE DE LA POSSIBILITE D?UN TEL PREJUDICE.

Retour au début

Traductions disponibles

 

Other Support Options

  • Need More Help?
    Contact a Support professional by Email, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.