1<?xml version="1.0" encoding="iso-8859-1"?> 2<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc"> 3<chapter id="msdfs"> 4 5<chapterinfo> 6 <author> 7 <firstname>Shirish</firstname><surname>Kalele</surname> 8 <affiliation> 9 <orgname>Samba Team & Veritas Software</orgname> 10 <address> 11 <email>samba@samba.org</email> 12 </address> 13 </affiliation> 14 </author> 15 &author.jht; 16 17 <pubdate>12 Jul 2000</pubdate> 18</chapterinfo> 19 20<title>Hosting a Microsoft Distributed File System Tree</title> 21 22<sect1> 23<title>Features and Benefits</title> 24 25 <para> 26<indexterm><primary>distributed file system</primary><see>DFS</see></indexterm> 27<indexterm><primary>physical locations</primary></indexterm> 28<indexterm><primary>higher availability</primary></indexterm> 29<indexterm><primary>load balancing</primary></indexterm> 30<indexterm><primary>logical directories</primary></indexterm> 31 The distributed file system (DFS) provides a means of separating the logical 32 view of files and directories that users see from the actual physical locations 33 of these resources on the network. It allows for higher availability, smoother 34 storage expansion, load balancing, and so on. 35 </para> 36 37 <para> 38<indexterm><primary>DFS</primary></indexterm> 39<indexterm><primary>DFS tree</primary></indexterm> 40<indexterm><primary>DFS-aware</primary></indexterm> 41 For information about DFS, refer to the <ulink 42 url="http://www.microsoft.com/NTServer/nts/downloads/winfeatures/NTSDistrFile/AdminGuide.asp">Microsoft 43 documentation</ulink>. This document explains how to host a DFS tree on a UNIX machine (for DFS-aware clients 44 to browse) using Samba. 45 </para> 46 47 <para> 48<indexterm><primary>DFS server</primary></indexterm> 49<indexterm><primary>share-level</primary></indexterm> 50<indexterm><primary>DFS junction</primary></indexterm> 51<indexterm><primary>DFS-aware</primary></indexterm> 52 A Samba server can be made a DFS server by setting the global Boolean <smbconfoption name="host msdfs"/> 53 parameter in the &smb.conf; file. You designate a share as a DFS root using the share-level Boolean 54 <smbconfoption name="msdfs root"/> parameter. A DFS root directory on Samba hosts DFS links in the form of 55 symbolic links that point to other servers. For example, a symbolic link 56 <filename>junction->msdfs:storage1\share1</filename> in the share directory acts as the DFS junction. When 57 DFS-aware clients attempt to access the junction link, they are redirected to the storage location (in this 58 case, <parameter>\\storage1\share1</parameter>). 59 </para> 60 61 <para> 62<indexterm><primary>DFS-aware</primary></indexterm> 63<indexterm><primary>DFS tree</primary></indexterm> 64<indexterm><primary>DFS links</primary></indexterm> 65<indexterm><primary>DFS</primary></indexterm> 66 DFS trees on Samba work with all DFS-aware clients ranging from Windows 95 to 200x. 67 <link linkend="dfscfg">The following sample configuration</link> shows how to setup a DFS tree on a Samba server. 68 In the <filename>/export/dfsroot</filename> directory, you set up your DFS links to 69 other servers on the network. 70<screen> 71&rootprompt;<userinput>cd /export/dfsroot</userinput> 72&rootprompt;<userinput>chown root /export/dfsroot</userinput> 73&rootprompt;<userinput>chmod 755 /export/dfsroot</userinput> 74&rootprompt;<userinput>ln -s msdfs:storageA\\shareA linka</userinput> 75&rootprompt;<userinput>ln -s msdfs:serverB\\share,serverC\\share linkb</userinput> 76</screen> 77</para> 78 79<example id="dfscfg"> 80<title>smb.conf with DFS Configured</title> 81<smbconfblock> 82<smbconfsection name="[global]"/> 83<smbconfoption name="netbios name">&example.server.samba;</smbconfoption> 84<smbconfoption name="host msdfs ">yes</smbconfoption> 85 86<smbconfsection name="[dfs]"/> 87<smbconfoption name="path">/export/dfsroot</smbconfoption> 88<smbconfoption name="msdfs root">yes</smbconfoption> 89</smbconfblock> 90</example> 91 92 <para> 93<indexterm><primary>DFS root</primary></indexterm> 94<indexterm><primary>msdfs links</primary></indexterm> 95<indexterm><primary>symbolic links</primary></indexterm> 96 You should set up the permissions and ownership of the directory acting as the DFS root so that only 97 designated users can create, delete, or modify the msdfs links. Also note that symlink names should be all 98 lowercase. This limitation exists to have Samba avoid trying all the case combinations to get at the link 99 name. Finally, set up the symbolic links to point to the network shares you want and start Samba. 100 </para> 101 102 <para> 103<indexterm><primary>DFS-aware clients</primary></indexterm> 104<indexterm><primary>DFS tree</primary></indexterm> 105 Users on DFS-aware clients can now browse the DFS tree on the Samba server at 106 <constant>\\samba\dfs</constant>. Accessing links linka or linkb (which appear as directories to the client) 107 takes users directly to the appropriate shares on the network. 108 </para> 109 110</sect1> 111 112<sect1> 113<title>Common Errors</title> 114 <itemizedlist> 115 <listitem><para>Windows clients need to be rebooted 116 if a previously mounted non-DFS share is made a DFS 117 root, or vice versa. A better way is to introduce a 118 new share and make it the DFS root.</para> 119 </listitem> 120 121 <listitem><para>Currently, there's a restriction that msdfs 122 symlink names should all be lowercase.</para> 123 </listitem> 124 125 <listitem><para>For security purposes, the directory 126 acting as the root of the DFS tree should have ownership 127 and permissions set so only designated users can 128 modify the symbolic links in the directory.</para> 129 </listitem> 130 </itemizedlist> 131 132 <sect2> 133 <title>MSDFS UNIX Path Is Case-Critical</title> 134 135 <para> 136 A network administrator sent advice to the Samba mailing list 137 after long sessions trying to determine why DFS was not working. 138 His advice is worth noting. 139 </para> 140 141 <para><quote> 142 I spent some time trying to figure out why my particular 143 DFS root wasn't working. I noted in the documentation that 144 the symlink should be in all lowercase. It should be 145 amended that the entire path to the symlink should all be 146 in lowercase as well. 147 </quote></para> 148 149 <para> 150 <quote>For example, I had a share defined as such:</quote> 151 <smbconfblock> 152 <smbconfsection name="[pub]"/> 153 <smbconfoption name="path">/export/home/Shares/public_share</smbconfoption> 154 <smbconfoption name="msdfs root">yes</smbconfoption> 155 </smbconfblock> 156 <quote>and I could not make my Windows 9x/Me (with the dfs client installed) follow this symlink:</quote> 157 <screen> 158 damage1 -> msdfs:damage\test-share 159 </screen> 160 </para> 161 162 <para> 163 <quote>Running a debug level of 10 reveals:</quote> 164 <programlisting> 165 [2003/08/20 11:40:33, 5] msdfs/msdfs.c:is_msdfs_link(176) 166 is_msdfs_link: /export/home/shares/public_share/* does not exist. 167 </programlisting> 168 <quote>Curious. So I changed the directory name from <constant>.../Shares/...</constant> to 169 <constant>.../shares/...</constant> (along with my service definition) and it worked!</quote> 170 </para> 171 172 </sect2> 173 174</sect1> 175 176</chapter> 177