Nis homedirs

Paul Allen paul.allen at
Thu Nov 5 19:13:04 GMT 1998


I'm using 2.0.0-alpha13 on Solaris (compiling with gcc 2.8.1 on Solaris
2.5, running  on 2.5, 2.5.1, and 2.6).  I see this in the smb.conf.5
man page:

 nis homedir (G)
     Get the home share server from a NIS (or YP) map.  For  unix
     systems  that  use an automounter, the user's home directory
     will often be mounted on a  workstation  on  demand  from  a
     remote server. When the Samba logon server is not the actual
     home directory server, two  network  hops  are  required  to
     access  the  home  directory and this can be very slow espe-
     cially with writing via Samba to an NFS  mounted  directory.
     This  option  allows samba to return the home share as being
     on a different server to the logon server and as long  as  a
     samba  daemon  is  running  on the home directory server, it
     will be mounted on the Samba client directly from the direc-
     tory  server.  When Samba is returning the home share to the
     client, it will consult the NIS (or  YP)  map  specified  in
     "homedir map" and return the server listed there.

     Default:      nis homedir = false

     Example:      nis homedir = true

... and ...

 homedir map (G)
     If "nis homedir" is true, this parameter specifies  the  NIS
     (or YP) map from which the server for the user's home direc-
     tory  should  be  extracted.   At  present,  only  the   Sun
     auto.home map format is understood. The form of the map is:

     username  server:/some/file/system

     and the program will extract the servername from before  the
     first ':'.  There should probably be a better parsing system
     that copes with different map formats and also Amd  (another
     automounter) maps.

     NB: The -DNETGROUP option is required in  the  Makefile  for
     option  to  work and on some architectures the line -lrpcsvc
     needs to be added to the LIBSM variable.  This  is  required
     for Solaris 2, FreeBSD and HPUX.

     See also "nis homedir"

     Default:      homedir map = auto.home

     Example:      homedir map = amd.homedir

I have four pure NFS fileservers.  By "pure", I mean that they are
absolutely not NFS clients.  I do not automount /home on my fileservers.
I have Samba 2.0.0-alpha13) running on all four servers with these
lines in each smb.conf file:

  nis homedir = True
  homedir map = auto_home

If I don't specify "path =" in the smb.conf file, the server  logfile
shows that Samba simply gets the home directory out of the passwd map
(/home/username) and attempts to use it.  OK, so I specify "path = %p",
and the log shows the server extracting the "/export/partition/username"
path from the auto_home map and using it.  This works if the home
directory is on the server that the user is connecting to.  When the
user connects to some other server, I expect something to happen that
results in the client connecting to the correct server.  Instead, the
client gets an error.

Looking at the code, it appears that the only time smbd will extract
the server name from the automount map is when it's translating the
%N parameter.  Inserting %N in the "path =" line in various ways
invariably fails.  I've tried "\\%N\%p", "%N:%p", and  some other
less likely alternatives.

Is this supposed to work?  What is the syntax of the "path =" line?
Do I need to put the %N in some other line?  Do I need to go read the
sources some more???

If I've overlooked something obvious, please be gentle with your flames.
All suggestions will be welcome!


Paul Allen
Paul L. Allen           | voice: (425) 865-3297  fax: (425) 865-2964
Unix Technical Support  | paul.l.allen at
Boeing AR&T Site Operations, POB 3707 M/S 7L-68, Seattle, WA 98124-2207
"Hack, then; strive against Mighty Problems, have joy in thy Striving,
and let the Crashes fall where they may (maintaining the while, for the 
Good of thy Karma, a Rigorous Backup Policy)."
  -- from "The Loginataka", Eric S. Raymond

More information about the samba mailing list