<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>IIS / FTP</title>
        <link>http://blog.crowe.co.nz/blog/category/28.aspx</link>
        <description>IIS / FTP</description>
        <language>en-NZ</language>
        <copyright>Chris Crowe</copyright>
        <managingEditor>blog@crowe.co.nz</managingEditor>
        <generator>Subtext Version 1.9.4.0</generator>
        <item>
            <title>Microsoft has created a new FTP service</title>
            <link>http://blog.crowe.co.nz/blog/archive/2007/05/02/736.aspx</link>
            <description>&lt;p&gt;Microsoft has created a new FTP service that has been completely rewritten for Windows Server Code Name "Longhorn". This new FTP service incorporates many new features that enable web authors to publish content better than before, and offers web administrators more security and deployment options. For additional information, please see our documentation.&lt;/p&gt;
&lt;p&gt;This new FTP service is only for Windows Server Code Name "Longhorn" and Internet Information Services 7.0; it will not work on Windows Server 2003 and Internet Information Services 6.0.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;This new FTP service supports a wide range of features and improvements, and the following list contains several of the improvements in this version:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Integration with IIS 7.0: &lt;br /&gt;
&lt;/u&gt;&lt;/strong&gt;IIS 7.0 has a brand-new administration interface and configuration store, and the new FTP service is tightly integrated with this new design. The old IIS 6 metabase is gone, and a new configuration store that is based on the .NET XML-based *.config format has taken its place. In addition, IIS 7.0 has a new administration tool, and the new FTP server plugs seamlessly into that paradigm.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;Support for new Internet standards:&lt;/u&gt;&lt;/strong&gt; &lt;br /&gt;
One of the most significant features in the new FTP server is support for FTP over SSL. The new FTP server also supports other Internet improvements such as UTF8 and IPv6.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;Shared hosting improvements:&lt;/u&gt;&lt;/strong&gt; &lt;br /&gt;
By fully integrating into IIS 7.0, the new FTP server makes it possible to host FTP and Web content from the same site by simply adding an FTP binding to an existing Web site. In addition, the FTP server now has virtual host name support, making it possible to host multiple FTP sites on the same IP address. The new FTP server also has improved user isolation, now making it possible to isolate users through per-user virtual directories.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;Extensibility and custom authentication:&lt;/u&gt;&lt;/strong&gt; &lt;br /&gt;
The new FTP server supports developer extensibility, making it possible for software vendors to write custom providers for FTP authentication. Microsoft is using this extensibility feature to implement two new methods for using non-Windows accounts for FTP authentication for IIS Managers and .NET Membership.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;Improved logging support:&lt;/u&gt;&lt;/strong&gt; &lt;br /&gt;
FTP logging has been enhanced to include all FTP-related traffic, unique tracking for FTP sessions, FTP sub-statuses, additional detail fields in FTP logs, and much more.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;New supportability features:&lt;/u&gt;&lt;/strong&gt; &lt;br /&gt;
IIS 7.0 has a new option to display detailed error messages for local users, and the FTP server supports this by providing detailed error responses when logging on locally to an FTP server. The FTP server also logs detailed information using Event Tracing for Windows (ETW), which provides additional detailed information for troubleshooting. &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Benefits&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This add-on is a substantial step forward for helping you to enable powerful publishing capabilities for your Web environment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requirements&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The following prerequisites must be fulfilled in order to install the new FTP server:&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
• You must be using Windows Server Code Name "Longhorn" Beta 3 or later. &lt;br /&gt;
• Internet Information Services 7.0 must be installed, and the administration tool should be installed if you are going to manage the FTP server using the IIS 7.0 user interface. &lt;br /&gt;
• You must install the FTP server as an administrator. (See the Downloading and Installing section for more.) &lt;br /&gt;
• IIS 7.0 supports a new shared configuration environment, which must be disabled on each server in a web farm before installing the new FTP server for each node. Note: Shared configuration can be re-enabled after the FTP server had been installed. &lt;br /&gt;
• The FTP server that is shipped on the Windows Server Code Name "Longhorn" DVD must be uninstalled before installing the new FTP server. &lt;/p&gt;
&lt;p&gt;See &lt;font face="Arial"&gt;&lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1454&amp;amp;g=6"&gt;http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1454&amp;amp;g=6&lt;/a&gt; for more details and to download.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/736.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2007/05/02/736.aspx</guid>
            <pubDate>Wed, 02 May 2007 13:25:32 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/736.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2007/05/02/736.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/736.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Changing the default FTP site to Isolate Users using Active Directory</title>
            <link>http://blog.crowe.co.nz/blog/archive/2006/09/14/677.aspx</link>
            <description>&lt;P&gt;If you have installed the FTP server for IIS 6 you will notice that it is not configured to isolate users either locally or by using Active Directory and that there is no UI to enable this!&lt;/P&gt;
&lt;P&gt;There are two ways to change user isolation:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Create a new FTP site and configure it then.&lt;/LI&gt;
&lt;LI&gt;Adjust the IIS Metabase properties using a script&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Option #1 above is quite simply and does not really need any explaining. Just create a new FTP site and follow the promtps.&lt;/P&gt;
&lt;P&gt;Option #2 is where this article is going to concentrate on.&lt;/P&gt;
&lt;P&gt;We can either write a simple &lt;B&gt;ADSI/WMI &lt;/B&gt;script or we can use the &lt;B&gt;adsutil.VBS&lt;/B&gt; script - we are going to concentrate on the &lt;B&gt;adsutil.VBS&lt;/B&gt; script.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;First things is how does IIS determine the user isolation mode?&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;IIS uses a metabase property called &lt;B&gt;UserIsolationMode&lt;/B&gt; to control user isolation in association with &lt;B&gt;ADConnectionsUserName&lt;/B&gt;, &lt;B&gt;ADConnectionsPassword&lt;/B&gt; and &lt;B&gt;DefaultLogonDomain&lt;/B&gt; properties.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;UserIsolationMode&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;The UserIsolationMode can only be one of the following values.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;0 = Not Isolated&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;1 = Isolated (Locally)&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;2 = Isolated using Active Directory&lt;/B&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;When UserIsolationMode = 0&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;There is no user isolation in this mode, this is the default setting.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;When UserIsolationMode = 1&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;When a client authenticates using local or domain accounts and is then sent to a folder under the root that matches the user name. This setting is called "Isolated (Locally)," and it supports users who do not want to use Active Directory.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;When UserIsolationMode = 2&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;User isolation is dependent on Active Directory. This setting is called "Isolated (Active Directory)," and it is primarily used by Internet service providers (ISPs) and other customers who want to set up large numbers of FTP accounts.&lt;/P&gt;
&lt;P&gt;When using this mode the following properties must also be configured.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;ADConnectionsUserName&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;ADConnectionsPassword&lt;/B&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;DefaultLogonDomain&lt;/B&gt;.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The &lt;B&gt;ADConnectionsUserName &lt;/B&gt;specifies the user account ( without Domain ) that will be used to communicate with Active Directory to read the &lt;B&gt;ms-IIS-FTP-Dir&lt;/B&gt; and &lt;B&gt;ms-IIS-FTP-Root &lt;/B&gt;Active Directory attributes. The &lt;B&gt;ADConnectionsPassword &lt;/B&gt;simply specifies the Password for the Username and the &lt;B&gt;DefaultLogonDomain &lt;/B&gt;is the domain for the user account.&amp;nbsp; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;Note&lt;/B&gt;: The UserIsolationMode key is by default not set in the IIS metabase for the default FTP site and defaults to a value of 0 (Not Isolated)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;Using ADSUTIL.VBS to change to Active Directory User Isolation Mode&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;Adsutil.vbs&lt;/B&gt; is installed into &lt;A href="file:///c:/inetpub/adminscripts"&gt;c:\inetpub\adminscripts&lt;/A&gt; by default.&lt;/P&gt;
&lt;P&gt;We will make the following assumptions for setting up User Isolation&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#ff0000&gt;&lt;B&gt;We have backed up the IIS Metabase using the UI - if you have not DO IT NOW!&amp;nbsp; &lt;/B&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;BR&gt;( Open IIS Manager, Right click Server Name, All Properties, Backup/Restore configuration)&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;We are going to change the default FTP site user isolation mode.&lt;/LI&gt;
&lt;LI&gt;We are going to Isolate users using Active Directory.&lt;/LI&gt;
&lt;LI&gt;We are going to use an account of &lt;B&gt;TestDomain\TestUserName&lt;/B&gt; to gain access to Active Directory with a password of &lt;B&gt;$Password_&lt;/B&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;To determine the current user isolation mode we will run the following command from a CMD.EXE prompt.&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;cscript adsutil.vbs get MSFTPSVC/1/UserIsolationMode&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG height=259 src="/Images/UserIsolation1.gif" width=668 border=0&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Note&lt;/B&gt;: In the above code we see that the value is not set! this is the default for the Default FTP Site&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;To set the UserIsolationMode to 2 which is Active Directory Isolation we issue the following command.&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;cscript adsutil.vbs set MSFTPSVC/1/UserIsolationMode 2&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG height=247 src="/Images/UserIsolation2.gif" width=668 border=0&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Note&lt;/B&gt;: The result is that we have now configured the default FTP site to use Active Directory Isolation (2)&lt;/P&gt;
&lt;P&gt;&lt;B&gt;But&lt;/B&gt;:&lt;B&gt; &lt;/B&gt;&lt;FONT color=#ff0000&gt;We have not configured any credentials to be used to allow the server to talk to Active Directory yet!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;We now need to configure the user account that will be used to communicate with Active Directory&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;The following commands will do this&lt;/P&gt;
&lt;P&gt;&lt;B&gt;cscript adsutil.vbs set MSFTPSVC/1/ADConnectionsUserName &lt;FONT color=#ff0000&gt;TestUserName&lt;/FONT&gt;&lt;BR&gt;cscript adsutil.vbs set MSFTPSVC/1/ADConnectionsPassword &lt;FONT color=#ff0000&gt;$Password_&lt;/FONT&gt;&lt;BR&gt;cscript adsutil.vbs set MSFTPSVC/1/DefaultLogonDomain &lt;FONT color=#ff0000&gt;TestDomain&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG height=395 src="/Images/UserIsolation6.gif" width=836 border=0&gt;&lt;/P&gt;
&lt;P&gt;If you now right clicked on the default FTP site in the IIS Manager and selected properties you would see that it is different.&lt;/P&gt;
&lt;TABLE id=table1 cellSpacing=0 cellPadding=3 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD align=middle&gt;&lt;B&gt;&lt;IMG height=435 src="/Images/UserIsolation3.gif" width=461 border=0&gt;&lt;/B&gt;&lt;/TD&gt;
&lt;TD align=middle&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;
&lt;TD align=middle&gt;&lt;B&gt;&lt;IMG height=435 src="/Images/UserIsolation4.gif" width=461 border=0&gt;&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD align=middle&gt;&lt;B&gt;Active Directory Isolation&lt;/B&gt;&lt;/TD&gt;
&lt;TD align=middle&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align=middle&gt;&lt;B&gt;Default - No User Isolation&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;To restore the UserIsolationMode to the default, which is 0 we simply issue the following command.&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;cscript adsutil.vbs set MSFTPSVC/1/UserIsolationMode 0&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG height=235 src="/Images/UserIsolation5.gif" width=668 border=0&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;IMG height=435 src="/Images/UserIsolation4.gif" width=461 border=0&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;A free FTP User Account Editor for Active Directory&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;The following application is free and comes with full source code written in c#. You can use this application to easily configure the &lt;B&gt;ms-IIS-FTP-Root &lt;/B&gt;and &lt;B&gt;ms-IIS-FTP-Dir &lt;/B&gt;Active Directory attributes for 1 or more users using a very simple UI.&lt;/P&gt;
&lt;P&gt;To read more or to download the application see this blog post - &lt;A href="http://blog.crowe.co.nz/archive/2006/03/09/594.aspx"&gt;http://blog.crowe.co.nz/archive/2006/03/09/594.aspx&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;IMG src="/images/ftpusereditor.gif" border=0&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;Some additional references::&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;UserIsolationMode&lt;BR&gt;&lt;/B&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/bf5915f4-1f7b-4245-acc0-642920b9ef7b.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/bf5915f4-1f7b-4245-acc0-642920b9ef7b.mspx&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;ADConnectionsUserName&lt;BR&gt;&lt;/B&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/f55728ba-08a1-4485-b9d0-ac08cf5f8a49.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/f55728ba-08a1-4485-b9d0-ac08cf5f8a49.mspx&lt;/A&gt; &lt;BR&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;ADConnectionsPassword&lt;BR&gt;&lt;/B&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/8b9cab5d-1a85-495b-b68f-1a5def1fd62e.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/8b9cab5d-1a85-495b-b68f-1a5def1fd62e.mspx&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;DefaultLogonDomain&lt;BR&gt;&lt;/B&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/8323c713-9d0d-4ea9-9069-5e2962bc2f77.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/8323c713-9d0d-4ea9-9069-5e2962bc2f77.mspx&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;ms-IIS-FTP-Dir&lt;BR&gt;&lt;/B&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adschema/adschema/a_msiis_ftpdir.asp?frame=true"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adschema/adschema/a_msiis_ftpdir.asp?frame=true&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;ms-IIS-FTP-Root&lt;BR&gt;&lt;/B&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adschema/adschema/a_msiis_ftproot.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adschema/adschema/a_msiis_ftproot.asp&lt;/A&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adschema/adschema/a_msiis_ftpdir.asp?frame=true" ?frame="true&lt;/a"&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/A&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/677.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2006/09/14/677.aspx</guid>
            <pubDate>Thu, 14 Sep 2006 11:15:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/677.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2006/09/14/677.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/677.aspx</wfw:commentRss>
        </item>
        <item>
            <title>IIS Insider - June 2006 - Written by me....</title>
            <link>http://blog.crowe.co.nz/blog/archive/2006/06/23/658.aspx</link>
            <description>&lt;DIV class=spacer&gt;&lt;/DIV&gt;
&lt;P class=introduction&gt;I have had my first set of questions &amp;amp; answers on the Microsoft FTP Server published in June IIS Insider section on &lt;A href="http://www.microsoft.com/"&gt;www.microsoft.com&lt;/A&gt;&lt;/P&gt;
&lt;P class=introduction&gt;&lt;I&gt;IIS Insider&lt;/I&gt; is a monthly column designed to answer your questions on how to troubleshoot and make the most of Microsoft Internet Information Services (IIS).&lt;/P&gt;
&lt;DIV class=introduction&gt;&lt;IMG height=150 alt="IIS Insider" src="/images/iisinsider.gif" width=102 align=right border=0&gt; &lt;/DIV&gt;
&lt;P class=introduction&gt;The questions I presented are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=introduction&gt;Adding Virtual Directories to an FTP Server&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=introduction&gt;Administering Physical Directories on an FTP Site&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=introduction&gt;User Isolation Mode options&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=introduction&gt;The article is up for the month of June (it only went up today June 22) at &lt;A href="http://www.microsoft.com/technet/community/columns/insider/default.mspx"&gt;http://www.microsoft.com/technet/community/columns/insider/default.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P class=introduction&gt;After June you can see the details on the &lt;A href="http://www.microsoft.com/technet/community/columns/insider/iisiarch.mspx"&gt;&lt;I&gt;IIS Insider&lt;/I&gt; column archives&lt;/A&gt; &lt;/P&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/658.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2006/06/23/658.aspx</guid>
            <pubDate>Fri, 23 Jun 2006 09:04:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/658.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2006/06/23/658.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/658.aspx</wfw:commentRss>
        </item>
        <item>
            <title>FTP - Steve Schofield has written a couple of useful articles on Blind Drop &amp; Blind Get FTP Server using IIS</title>
            <link>http://blog.crowe.co.nz/blog/archive/2006/06/08/653.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Steve Schofield has written two artricles on how to setup an anonymous &lt;B&gt;&amp;#8220;blind drop&amp;#8221;&lt;/B&gt; and &lt;STRONG&gt;&amp;#8220;Blind Get&amp;#8220;&lt;/STRONG&gt; FTP server using Microsoft Windows 2003&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;See these articles&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.iislogs.com/articles/blinddrop/"&gt;Blind Drop FTP Server using IIS&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.iislogs.com/articles/blindget/"&gt;Blind Get FTP Server using IIS&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;You maybe wondering, what is a &lt;B&gt;&amp;#8220;blind drop&amp;#8221;&lt;/B&gt; server?&amp;nbsp; A &lt;B&gt;&amp;#8220;blind drop&lt;/B&gt;&amp;#8221; FTP server provides individuals or companies a method to anonymously transfer files using FTP files without having permission to list files or retrieve files on the FTP site.&amp;nbsp; In other words, you can &amp;#8220;drop&amp;#8221; files onto the server but not see what&amp;#8217;s there or retrieve files if you did know what was there. There are benefits for both the end-user and FTP administrator.&amp;nbsp; The end-user doesn&amp;#8217;t have to remember a user id and password.&amp;nbsp; The FTP administrator uses NTFS permissions so anonymous users can&amp;#8217;t browse or retrieve files.&amp;nbsp; The biggest benefit for the FTP administrator is that they don&amp;#8217;t have to maintain user ids and passwords for everyone needing FTP access.&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;You maybe wondering, what is a &lt;B&gt;&amp;#8220;blind get&amp;#8221;&lt;/B&gt; server?&amp;nbsp; A &lt;B&gt;&amp;#8220;blind get&lt;/B&gt;&amp;#8221; FTP server provides a method to anonymously transfer files using FTP without having permission to list files or add files on the FTP site.&amp;nbsp; In other words, you can &lt;B&gt;&amp;#8220;get&amp;#8221;&lt;/B&gt; files but not see what&amp;#8217;s there or retrieve files unless the absolute path is known.&amp;nbsp; There are benefits for both the end-user and FTP administrator.&amp;nbsp; The end-user doesn&amp;#8217;t have to remember a user id and password.&amp;nbsp; The FTP administrator uses NTFS permissions so anonymous users can&amp;#8217;t browse or add files.&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/653.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2006/06/08/653.aspx</guid>
            <pubDate>Thu, 08 Jun 2006 19:50:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/653.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2006/06/08/653.aspx#feedback</comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/653.aspx</wfw:commentRss>
        </item>
        <item>
            <title>FTP User Editor for Active Directory (Updated)</title>
            <link>http://blog.crowe.co.nz/blog/archive/2006/03/09/594.aspx</link>
            <description>&lt;DIV class=postbody&gt;
&lt;P&gt;The FTP User Editor for Microsoft Active Directory has been updated a fix a couple of problems.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Bugs&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;There was a limit of 1000 objects being returned from the Active Directory - increased to 32768. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;You can download and install from:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Binary Version&lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://blog.crowe.co.nz/Attachments/FTPUserEditor/1.10/setup.msi"&gt;http://blog.crowe.co.nz/Attachments/FTPUserEditor/1.10/setup.msi&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;Full Source&lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://blog.crowe.co.nz/Attachments/FTPUserEditor/1.10/FTPADUserEditorv110.rar"&gt;http://blog.crowe.co.nz/Attachments/FTPUserEditor/1.10/FTPADUserEditorv110.rar&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;For more details on the FTP User Editor please see the original post at &lt;A href="http://blog.crowe.co.nz/archive/2006/02/15/556.aspx"&gt;http://blog.crowe.co.nz/archive/2006/02/15/556.aspx&lt;/A&gt;&lt;/P&gt;&lt;IMG src="/images/ftpusereditor.gif"&gt;&lt;/DIV&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/594.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2006/03/09/594.aspx</guid>
            <pubDate>Thu, 09 Mar 2006 08:06:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/594.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2006/03/09/594.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/594.aspx</wfw:commentRss>
        </item>
        <item>
            <title>FTP User Editor for Microsoft Active Directory (Updated)</title>
            <link>http://blog.crowe.co.nz/blog/archive/2006/03/03/590.aspx</link>
            <description>&lt;P&gt;The FTP User Editor for Microsoft Active Directory has been updated a fix a couple of problems.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Bugs&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The connect dialog did not hide the password as you typed it! 
&lt;LI&gt;The Recent Users were lost after you shutdown due to a difference in implementation between the old and new controls.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;New Features&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You can now browse to find the path for the FTP Root directory.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;You can download and install from:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Binary Version&lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://blog.crowe.co.nz/Attachments/FTPUserEditor/1.09/setup.msi"&gt;http://blog.crowe.co.nz/Attachments/FTPUserEditor/1.09/setup.msi&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;
&lt;LI&gt;&lt;STRONG&gt;Full Source&lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://blog.crowe.co.nz/Attachments/FTPUserEditor/1.09/FTPADUserEditorv109.rar"&gt;http://blog.crowe.co.nz/Attachments/FTPUserEditor/1.09/FTPADUserEditorv109.rar&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;For more details on the FTP User Editor please see the original post at &lt;A href="http://blog.crowe.co.nz/archive/2006/02/15/556.aspx"&gt;http://blog.crowe.co.nz/archive/2006/02/15/556.aspx&lt;/A&gt;&lt;/P&gt;
&lt;img src="/images/ftpusereditor.gif"&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/590.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2006/03/03/590.aspx</guid>
            <pubDate>Fri, 03 Mar 2006 14:39:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/590.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2006/03/03/590.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/590.aspx</wfw:commentRss>
        </item>
        <item>
            <title>C# application to show the WWW and FTP Sites and their log file directories....</title>
            <link>http://blog.crowe.co.nz/blog/archive/2006/02/22/574.aspx</link>
            <description>&lt;P&gt;I often look at the log files on my web server and with IIS 6 the folders are created with random numbers.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;Correction from Tom regarding the &amp;#8220;random numbers&amp;#8220;:&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;In fact the log file names are&amp;nbsp;generated from the site name so that in cases where a site is run on multiple servers the site id will be the same on each server. This helps with scripting and stuff. You can configure it in the registry to use the IIS5 type naming format if you want.&lt;/P&gt;
&lt;P&gt;More details can be found below:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Microsoft IIS Insider - February 2005&lt;BR&gt;&lt;A href="http://www.microsoft.com/technet/community/columns/insider/iisi0205.mspx#ECE"&gt;http://www.microsoft.com/technet/community/columns/insider/iisi0205.mspx#ECE&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Configure the Web Site Identification Number (IIS 6.0)&lt;BR&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/fb7eb8d1-8862-497b-83d3-eee54a98a2de.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/fb7eb8d1-8862-497b-83d3-eee54a98a2de.mspx&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;This simple application will display the WWW and FTP sites along with the log file directory. Just compile&lt;BR&gt;it up or download the executable and drop the executable into your c:\windows\system32\logfiles folder and&lt;BR&gt;just dblclick on it when you need to view the sites to folders relationships.&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;&lt;IMG src="/images/iishelpdir.gif"&gt; 
&lt;HR id=null&gt;
&lt;PRE&gt;&lt;FONT color=blue&gt;using&lt;/FONT&gt; System;
&lt;FONT color=blue&gt;using&lt;/FONT&gt; System.DirectoryServices;
&lt;FONT color=blue&gt;using&lt;/FONT&gt; System.IO;
&lt;FONT color=blue&gt;using&lt;/FONT&gt; System.Collections;
&lt;FONT color=blue&gt;using&lt;/FONT&gt; System.Windows.Forms;
&lt;FONT color=blue&gt;namespace&lt;/FONT&gt; IISHelpDir
{
    &lt;FONT color=gray&gt;/// &lt;SUMMARY&gt;&lt;/FONT&gt;
    &lt;FONT color=gray&gt;/// Summary description for Class1.&lt;/FONT&gt;
    &lt;FONT color=gray&gt;/// &lt;/SUMMARY&gt;&lt;/FONT&gt;
    &lt;FONT color=blue&gt;class&lt;/FONT&gt; Class1
    {
        &lt;FONT color=gray&gt;/// &lt;SUMMARY&gt;&lt;/FONT&gt;
        &lt;FONT color=gray&gt;/// The main entry point for the application.&lt;/FONT&gt;
        &lt;FONT color=gray&gt;/// &lt;/SUMMARY&gt;&lt;/FONT&gt;
        [STAThread]
        &lt;FONT color=blue&gt;static&lt;/FONT&gt; &lt;FONT color=blue&gt;void&lt;/FONT&gt; Main(&lt;FONT color=blue&gt;string&lt;/FONT&gt;[] args)
        {
            SortedList www = &lt;FONT color=blue&gt;new&lt;/FONT&gt; SortedList();
            SortedList ftp = &lt;FONT color=blue&gt;new&lt;/FONT&gt; SortedList();
            &lt;FONT color=blue&gt;try&lt;/FONT&gt;
            {
                &lt;FONT color=blue&gt;const&lt;/FONT&gt; &lt;FONT color=blue&gt;string&lt;/FONT&gt; FtpServerSchema = &lt;FONT color=maroon&gt;"IIsFtpServer"&lt;/FONT&gt;; &lt;FONT color=green&gt;// Case Sensitive&lt;/FONT&gt;
                &lt;FONT color=blue&gt;const&lt;/FONT&gt; &lt;FONT color=blue&gt;string&lt;/FONT&gt; WebServerSchema = &lt;FONT color=maroon&gt;"IIsWebServer"&lt;/FONT&gt;; &lt;FONT color=green&gt;// Case Sensitive&lt;/FONT&gt;
                &lt;FONT color=blue&gt;string&lt;/FONT&gt; ServerName = &lt;FONT color=maroon&gt;"LocalHost"&lt;/FONT&gt;;
                DirectoryEntry W3SVC = &lt;FONT color=blue&gt;new&lt;/FONT&gt; DirectoryEntry(&lt;FONT color=maroon&gt;"IIS://"&lt;/FONT&gt; + ServerName + &lt;FONT color=maroon&gt;"/w3svc"&lt;/FONT&gt;);
                &lt;FONT color=blue&gt;foreach&lt;/FONT&gt; (DirectoryEntry Site &lt;FONT color=blue&gt;in&lt;/FONT&gt; W3SVC.Children) 
                {
                    &lt;FONT color=blue&gt;if&lt;/FONT&gt; (Site.SchemaClassName == WebServerSchema) 
                    {
                        &lt;FONT color=blue&gt;string&lt;/FONT&gt; LogFilePath = System.IO.Path.Combine(
                            Site.Properties[&lt;FONT color=maroon&gt;"LogFileDirectory"&lt;/FONT&gt;].Value.ToString(),
                            &lt;FONT color=maroon&gt;"W3CSVC"&lt;/FONT&gt;+Site.Name);
                        www.Add(Site.Properties[&lt;FONT color=maroon&gt;"ServerComment"&lt;/FONT&gt;].Value.ToString(), LogFilePath);
                    }
                }
    
                DirectoryEntry MSFTPSVC = &lt;FONT color=blue&gt;new&lt;/FONT&gt; DirectoryEntry(&lt;FONT color=maroon&gt;"IIS://"&lt;/FONT&gt; + ServerName + &lt;FONT color=maroon&gt;"/msftpsvc"&lt;/FONT&gt;);
                &lt;FONT color=blue&gt;foreach&lt;/FONT&gt; (DirectoryEntry Site &lt;FONT color=blue&gt;in&lt;/FONT&gt; MSFTPSVC.Children) 
                {
                    &lt;FONT color=blue&gt;if&lt;/FONT&gt; (Site.SchemaClassName == FtpServerSchema) 
                    {
                        &lt;FONT color=blue&gt;string&lt;/FONT&gt; LogFilePath = System.IO.Path.Combine(
                            Site.Properties[&lt;FONT color=maroon&gt;"LogFileDirectory"&lt;/FONT&gt;].Value.ToString(), 
                            &lt;FONT color=maroon&gt;"MSFTPSVC"&lt;/FONT&gt;+Site.Name);
                        ftp.Add(Site.Properties[&lt;FONT color=maroon&gt;"ServerComment"&lt;/FONT&gt;].Value.ToString(), LogFilePath);
                    }
                }
                &lt;FONT color=blue&gt;int&lt;/FONT&gt; MaxWidth = &lt;FONT color=maroon&gt;0&lt;/FONT&gt;;
                &lt;FONT color=blue&gt;foreach&lt;/FONT&gt;(&lt;FONT color=blue&gt;string&lt;/FONT&gt; Site &lt;FONT color=blue&gt;in&lt;/FONT&gt; www.Keys)
                {
                    &lt;FONT color=blue&gt;if&lt;/FONT&gt; (Site.Length &amp;gt; MaxWidth)
                        MaxWidth = Site.Length;
                }
                &lt;FONT color=blue&gt;foreach&lt;/FONT&gt;(&lt;FONT color=blue&gt;string&lt;/FONT&gt; Site &lt;FONT color=blue&gt;in&lt;/FONT&gt; ftp.Keys)
                {
                    &lt;FONT color=blue&gt;if&lt;/FONT&gt; (Site.Length &amp;gt; MaxWidth)
                        MaxWidth = Site.Length;
                }
                Console.WriteLine(&lt;FONT color=maroon&gt;"Site Description"&lt;/FONT&gt;.PadRight(MaxWidth)+&lt;FONT color=maroon&gt;"  Log File Directory"&lt;/FONT&gt;);
                Console.WriteLine(&lt;FONT color=maroon&gt;""&lt;/FONT&gt;.PadRight(&lt;FONT color=maroon&gt;79&lt;/FONT&gt;,&lt;FONT color=maroon&gt;'='&lt;/FONT&gt;));
                Console.WriteLine();
                Console.WriteLine(&lt;FONT color=maroon&gt;"WWW Sites"&lt;/FONT&gt;);
                Console.WriteLine(&lt;FONT color=maroon&gt;"========="&lt;/FONT&gt;);
                &lt;FONT color=blue&gt;foreach&lt;/FONT&gt;(&lt;FONT color=blue&gt;string&lt;/FONT&gt; Site &lt;FONT color=blue&gt;in&lt;/FONT&gt; www.Keys)
                {
                    Console.WriteLine(Site.PadRight(MaxWidth) + &lt;FONT color=maroon&gt;"  "&lt;/FONT&gt; + www[Site]);
                }                
                &lt;FONT color=blue&gt;if&lt;/FONT&gt; (ftp.Keys.Count &amp;gt; &lt;FONT color=maroon&gt;0&lt;/FONT&gt;)
                {
                    Console.WriteLine();
                    Console.WriteLine(&lt;FONT color=maroon&gt;"FTP Sites"&lt;/FONT&gt;);
                    Console.WriteLine(&lt;FONT color=maroon&gt;"========="&lt;/FONT&gt;);
                    &lt;FONT color=blue&gt;foreach&lt;/FONT&gt;(&lt;FONT color=blue&gt;string&lt;/FONT&gt; Site &lt;FONT color=blue&gt;in&lt;/FONT&gt; ftp.Keys)
                    {
                        Console.WriteLine(Site.PadRight(MaxWidth) + &lt;FONT color=maroon&gt;"  "&lt;/FONT&gt; + ftp[Site]);
                    }                
                }
            }
                &lt;FONT color=green&gt;// Catch any errors&lt;/FONT&gt;
            &lt;FONT color=blue&gt;catch&lt;/FONT&gt; (Exception e) 
            {
                Console.WriteLine(&lt;FONT color=maroon&gt;"Error: "&lt;/FONT&gt; + e.ToString());
            }
            &lt;FONT color=blue&gt;finally&lt;/FONT&gt;
            {
                Console.WriteLine();
                Console.WriteLine(&lt;FONT color=maroon&gt;"Press enter to close/exit...."&lt;/FONT&gt;);
                Console.Read();
            }
        }
    }
}
&lt;/PRE&gt;
&lt;HR id=null&gt;

&lt;P&gt;To download a ZIP file containing the c# source and executable (.Net 1.1) please &lt;A href="http://blog.crowe.co.nz/attachments/IISHelpDir.ZIP"&gt;click here.&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/574.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2006/02/22/574.aspx</guid>
            <pubDate>Wed, 22 Feb 2006 14:44:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/574.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2006/02/22/574.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/574.aspx</wfw:commentRss>
        </item>
        <item>
            <title>FTP User Account Editor for Active Directory</title>
            <link>http://blog.crowe.co.nz/blog/archive/2006/02/15/556.aspx</link>
            <description>&lt;H1&gt;FTP User Editor for Microsoft Active Directory.....&lt;/H1&gt;
&lt;H3&gt;What is this?&lt;/H3&gt;
&lt;P&gt;When you run the FTP server with Microsoft IIS 6.0 on the Windows 2003 Server Family of products you can have the FTP server isolate users to their own folders. This means that the user can not browse into another users folder.&lt;/P&gt;
&lt;P&gt;There are three isolation modes:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Do not isolate users&lt;/LI&gt;
&lt;LI&gt;Isolate Users&lt;/LI&gt;
&lt;LI&gt;Isolate Users with Active Directory&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;This application is designed for option 3 and allows you to edit two attributes for a users account:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;msIIS-FTPRoot&lt;/LI&gt;
&lt;LI&gt;msIIS-FTPDir&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;For more details on these attributes see the following page.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adschema/adschema/a_msiis_ftproot.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adschema/adschema/a_msiis_ftproot.asp&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;There is no Windows UI to perform this step but there is a way to edit these attributes using the IISFTP.vbs script that is installed when you install IIS with the FTP Service in IIS 6.&lt;/P&gt;
&lt;P&gt;The IISFTP.vbs script works fine but sometimes it is nicer and simpler to have a UI to help perform these steps. You also can see potential problems easier with a Windows UI.&lt;/P&gt;
&lt;H3&gt;The Application&lt;/H3&gt;
&lt;P&gt;This application has been written to in c# and requires the .NET Framework 2.0 (the new framework) to function. Windows 2003 Server Family by default installs the .NET Framework 1.1.&lt;/P&gt;
&lt;P&gt;The .NET Framework 2.0 redistributable can be downloaded from this page and is approx 22MB&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;You can then download and install this application from the URL below.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blog.crowe.co.nz/Attachments/FTPUserEditor/setup.msi"&gt;http://blog.crowe.co.nz/Attachments/FTPUserEditor/setup.msi&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;After you install the program a new item will be added to your Start - Programs folder called &lt;B&gt;IIS Tools.&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG height=590 src="/images/FTPUserEditor_Main.gif" width=878 border=0&gt;&lt;/P&gt;
&lt;P&gt;When you run the application it will prompt you for a Windows Active Directory domain to log onto. You can log on with the currently logged on user account or you can specify another account to log on with.&lt;/P&gt;
&lt;P&gt;Once you log on you are then shown a tree of Folders and Organizational Units (OUs). Click on a node will display all user accounts in that folder or OU.&lt;/P&gt;
&lt;P&gt;You can select one or more users and right click and select Edit which will bring up the User Editor dialog.&lt;/P&gt;
&lt;P&gt;&lt;IMG height=468 src="/images/FTPUserEditor_Edit.gif" width=488 border=0&gt;&lt;/P&gt;
&lt;P&gt;This dialog allows you to set or clear the attributes that are required for users to log on to the FTP server.&lt;/P&gt;
&lt;P&gt;If you have any comments on this application ( or bug reports ) please let me know at &lt;A href="mailto:iismvp2005@iisfaq.homeip.net"&gt;iismvp2005@iisfaq.homeip.net&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Cheers&lt;/P&gt;
&lt;P&gt;Chris Crowe [ IIS MVP 1997 -&gt; 2006 ]&lt;BR&gt;&lt;A href="http://www.microsoft.com/windows2000/community/mvp/bios/crowe.mspx"&gt;http://www.microsoft.com/windows2000/community/mvp/bios/crowe.mspx&lt;/A&gt;&lt;/P&gt;
&lt;H3&gt;Additional references&lt;/H3&gt;
&lt;P&gt;Hosting Multiple FTP Sites with FTP User Isolation (IIS 6.0)&lt;BR&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/b63de8ef-e3c5-456d-a8ca-7af4198819d4.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/b63de8ef-e3c5-456d-a8ca-7af4198819d4.mspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/556.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2006/02/15/556.aspx</guid>
            <pubDate>Wed, 15 Feb 2006 09:16:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/556.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2006/02/15/556.aspx#feedback</comments>
            <slash:comments>21</slash:comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/556.aspx</wfw:commentRss>
        </item>
        <item>
            <title>FTP Error Status Codes</title>
            <link>http://blog.crowe.co.nz/blog/archive/2005/10/19/293.aspx</link>
            <description>&lt;TABLE id=table1 style="BORDER-COLLAPSE: collapse" cellPadding=3 width="100%" bgColor=#ffffff border=1&gt;
&lt;TBODY&gt;
&lt;TR align=middle bgColor=#cccccc&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;&lt;B&gt;Code&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;&lt;B&gt;Description&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffcc&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif" noWrap align=middle&gt;&lt;B&gt;100 Codes&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif" align=left&gt;&lt;B&gt;The requested action is being taken. Expect a reply before proceeding with a new command.&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;110&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Restart marker reply.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;120&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Service ready in (n) minutes.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;125&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Data connection already open, transfer starting.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;150&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;File status okay, about to open data connection.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top bgColor=#ffffcc&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif" align=middle&gt;&lt;B&gt;200 Codes&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif" align=left&gt;&lt;B&gt;The requested action has been successfully completed.&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;200&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Command okay.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;202&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Command not implemented&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;211&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;System status, or system help reply.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;212&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Directory status.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;213&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;File status.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;214&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Help message.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;215&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;NAME system type. (NAME is an official system name from the list in the Assigned Numbers document.)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;220&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Service ready for new user.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;221&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Service closing control connection. (Logged out if appropriate.)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;225&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Data connection open, no transfer in progress.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;226&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Closing data connection. Requested file action successful (file transfer, abort, etc.).&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;227&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Entering Passive Mode&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;230&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;User logged in, proceed.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;250&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Requested file action okay, completed.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;257&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;"PATHNAME" created.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top bgColor=#ffffcc&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif" align=middle&gt;&lt;B&gt;300 Codes&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif" align=left&gt;&lt;B&gt;The command has been accepted, but the requested action is being held pending receipt of further information.&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;331&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;User name okay, need password.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;332&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Need account for login.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;350&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Requested file action pending further information.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top bgColor=#ffffcc&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif" align=middle&gt;&lt;B&gt;400 Codes&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif" align=left&gt;&lt;B&gt;The command was not accepted and the requested action did not take place. &lt;BR&gt;Tthe error condition is temporary, however, and the action may be requested again.&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;421&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Service not available, closing control connection. (May be a reply to any command if the service knows it must shut down.)`&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;425&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Can't open data connection.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;426&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Connection closed, transfer aborted.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;450&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Requested file action not taken. File unavailable (e.g., file busy).&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;451&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Requested action aborted, local error in processing.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;452&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Requested action not taken. Insufficient storage space in system.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top bgColor=#ffffcc&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif" align=middle&gt;&lt;B&gt;500 Codes&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif" align=left&gt;&lt;B&gt;The command was not accepted and the requested action did not take place.&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;500&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Syntax error, command unrecognized. This may include errors such as command line too long.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;501&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Syntax error in parameters or arguments.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;502&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Command not implemented.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;503&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Bad sequence of commands.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;504&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Command not implemented for that parameter.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;530&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;User not logged in.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;532&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Need account for storing files.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;550&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Requested action not taken. File unavailable (e.g., file not found, no access).&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;552&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Requested file action aborted, storage allocation exceeded&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=text1 align=middle&gt;&lt;B&gt;553&lt;/B&gt;&lt;/TD&gt;
&lt;TD style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma, Arial, Helvetica, Helv, sans-serif"&gt;Requested action not taken. Illegal file name.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/293.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2005/10/19/293.aspx</guid>
            <pubDate>Wed, 19 Oct 2005 17:55:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/293.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2005/10/19/293.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/293.aspx</wfw:commentRss>
        </item>
        <item>
            <title>IIS FTP - Shared Folders with FTP Isolated Users</title>
            <link>http://blog.crowe.co.nz/blog/archive/2005/09/02/246.aspx</link>
            <description>&lt;DIV&gt;I came across this question on the "&lt;B&gt;microsoft.public.inetserver.ftp&lt;/B&gt;" newsgroup today 
&lt;BLOCKQUOTE&gt;
&lt;TABLE id=table1 style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=5 bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;I&gt;I am setting up a FTP site in User Isolation Mode.&lt;BR&gt;I have FTPRoot as C:\Inetpub\ftproot.&lt;BR&gt;Under this I have the following phsical directory structure:&lt;BR&gt;LocalUser&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |- User1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |- Public&lt;BR&gt;&lt;BR&gt;Both User1 and anonymous can log in fine and are limited to their &lt;BR&gt;directories (so far so good)&lt;BR&gt;&lt;BR&gt;I have a directory c:\ftp\shared that I want User1 and anon to see under &lt;BR&gt;their home directories, but I can't seem to setup the virtual directory &lt;BR&gt;structure correctly.&lt;BR&gt;&lt;BR&gt;I have tried the following in IIS:&lt;BR&gt;WebSite&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |-LocalUser (VDIR to c:\Inetpub\ftproot\LocalUser)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |-User1 (VDIR to c:\Inetpub\ftproot\LocalUser\User1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |-shared (VDIR to C:\ftp\shared)&lt;BR&gt;&lt;BR&gt;and&lt;BR&gt;WebSite&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |- User1 (VDIR to c:\Inetpub\ftproot\LocalUser)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |- shared (VDIR to c:\ftp\shared)&lt;BR&gt;&lt;BR&gt;neither has worked.&amp;nbsp; I have also tried to setup the LocalUser as a virtual &lt;BR&gt;directory pointing to some other location (moving the physical directories &lt;BR&gt;too), but then no user was able to login.&lt;BR&gt;&lt;BR&gt;What is the proper way to do this?&lt;BR&gt;&amp;nbsp;&lt;/I&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The following is one method to get this to work - I do not know of a better method but this does work&lt;/P&gt;
&lt;P&gt;Lets start with a new FTP Site with nothing in it.&lt;/P&gt;
&lt;P&gt;I start by creating a folder at the following location (you can use any path you want)&lt;/P&gt;
&lt;P&gt;&lt;B&gt;C:\Inetpub\FTPSites\LocalIsolatedShared&lt;/B&gt;&lt;/P&gt;
&lt;DIV&gt;Now you create your FTP site and configure it to use FTP Isolated Users
&lt;P&gt;&lt;IMG height=374 src="/Images/FTPIsolatedUsers.gif" width=482 border=0&gt;&lt;/P&gt;
&lt;P&gt;So continue with the FTP Site Creation Wizard.&lt;/P&gt;
&lt;P&gt;Now in the home directory folder you must create the following directory "&lt;B&gt;LocalUser&lt;/B&gt;" so our path will be:&lt;/P&gt;
&lt;P&gt;C:\Inetpub\FTPSites\LocalIsolatedShared\&lt;B&gt;LocalUser&lt;/B&gt;&lt;/P&gt;
&lt;TABLE id=table2 style="BORDER-COLLAPSE: collapse" cellPadding=2 width="100%" bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top&gt;&lt;B&gt;Note&lt;/B&gt;: &lt;/TD&gt;
&lt;TD&gt;In my sample I am doing this on Small Business Server 2003 which is a Domain Controller - this means that instead of using &lt;B&gt;LocalUser&lt;/B&gt; I must use the name of my domain which is called &lt;B&gt;IISFAQ&lt;/B&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Now you must create your directories for each user who will access the FTP site.&lt;/P&gt;
&lt;P&gt;In this example I have created a user called XYZ&lt;/P&gt;
&lt;P&gt;so I now create a folder called XYZ inside of the &lt;B&gt;LocalUser&lt;/B&gt; or &lt;B&gt;DOMAINNAME&lt;/B&gt; folder.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;C:\Inetpub\FTPSites\LocalIsolatedShared\IISFAQ\XYZ&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Create a file in the &lt;B&gt;XYZ&lt;/B&gt; folder called &lt;B&gt;XYZ.TXT&lt;/B&gt; just so we know we are in the correct place.&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;If you test this now with an FTP client you should be able to log on as user &lt;B&gt;XYZ&lt;/B&gt; and see the file &lt;B&gt;XYZ.TXT&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG height=247 src="/Images/FTPLogonAsXYZ.gif" width=517 border=0&gt;&lt;/P&gt;
&lt;P&gt;We now need to create a folder for the shared documents or files.&lt;/P&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;We go back to out FTP home directory and create a folder called Shared
&lt;P&gt;C:\Inetpub\FTPSites\LocalIsolatedShared\&lt;B&gt;Shared&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;If this is all we do our Shared folder is not accessible so it does not have any use to us.&lt;/P&gt;
&lt;P&gt;Create a file in the &lt;B&gt;Shared&lt;/B&gt; file called &lt;B&gt;Shared.TXT&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;We now need to add a virtual directory to the FTP Site.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Right click the FTP Site in IIS Manager and select New-Virtual Directory&lt;/LI&gt;
&lt;LI&gt;Enter &lt;B&gt;Shared&lt;/B&gt; as the Alias and click Next&lt;/LI&gt;
&lt;LI&gt;Enter &lt;B&gt;C:\Inetpub\FTPSites\LocalIsolatedShared\Shared &lt;/B&gt;as the path and click next&lt;/LI&gt;
&lt;LI&gt;Click Next and then click Finish.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Now although the user will not be able to see this Shared folder they can actually change directory to it. So it is sort of like a hidden directory as can be shown below.&lt;/P&gt;
&lt;P&gt;&lt;IMG height=439 src="/Images/FTPLogonAsXYZcdShared.gif" width=517 border=0&gt;&lt;/P&gt;
&lt;P&gt;So &amp;nbsp;we now have a problem because the Shared virtual directory is there but the user can not see it!&lt;/P&gt;
&lt;P&gt;So how do we get the user to see this virtual directory?&lt;/P&gt;
&lt;P&gt;The only way that I know of is to create a physical folder called "Shared" in the users area.&lt;/P&gt;
&lt;P&gt;So we end up with this path:&lt;/P&gt;
&lt;P&gt;&lt;B&gt;C:\Inetpub\FTPSites\LocalIsolatedShared\IISFAQ\Shared&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Now when the user issues a DIR command they will see a folder called Shared and if they change into the Shared folder they will see the contents not of the physical folder but of the virtual directory folder as can be shown below.&lt;/P&gt;
&lt;P&gt;&lt;IMG height=391 src="/Images/FTPLogonAsXYZcdSharedComple.gif" width=517 border=0&gt;&lt;/P&gt;
&lt;TABLE id=table3 style="BORDER-COLLAPSE: collapse" cellPadding=2 width="100%" bgColor=#ffffcc border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top&gt;&lt;B&gt;Note&lt;/B&gt;: &lt;/TD&gt;
&lt;TD&gt;This means that we have to create a folder called &lt;B&gt;Shared&lt;/B&gt; for every FTP user on your site which is not ideal and sort of defeats the purpose of virtual directories but I do not know of another way to perform this action.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;img src="http://blog.crowe.co.nz/blog/aggbug/246.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Crowe [IIS MVP]</dc:creator>
            <guid>http://blog.crowe.co.nz/blog/archive/2005/09/02/246.aspx</guid>
            <pubDate>Fri, 02 Sep 2005 23:30:00 GMT</pubDate>
            <wfw:comment>http://blog.crowe.co.nz/blog/comments/246.aspx</wfw:comment>
            <comments>http://blog.crowe.co.nz/blog/archive/2005/09/02/246.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blog.crowe.co.nz/blog/comments/commentRss/246.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>