# slapo-homedir

## NAME



           slapo-homedir - Home directory provisioning overlay
    


## SYNOPSIS



           ETCDIR/slapd.conf
    


## DESCRIPTION



           The **homedir** overlay causes slapd(8) to notice changes involving
           RFC-2307bis style user-objects and make appropriate changes to the
           local filesystem.  This can be performed on both master and
           replica systems, so it is possible to perform remote home
           directory provisioning.
    


## CONFIGURATION



           Both slapd.conf and back-config style configuration is supported.
    
           **overlay homedir**
                  This directive adds the homedir overlay to the current
                  database, or to the frontend, if used before any database
                  instantiation; see slapd.conf(5) for details.
    
           **homedir-skeleton-path <pathname>**
    
           **olcSkeletonPath: pathname**
                  These options set the path to the skeleton account
                  directory.  (Generally, /etc/skel) Files in this directory
                  will be copied into newly created home directories.
                  Copying is recursive and handles symlinks and fifos, but
                  will skip most specials.
    
           **homedir-min-uidnumber <user id number>**
    
           **olcMinimumUidNumber: number**
                  These options configure the minimum userid to use in any
                  home directory attempt.  This is a basic safety measure to
                  prevent accidentally using system accounts.  See
                  REPLICATION for more flexible options for selecting
                  accounts.
    
           **homedir-regexp <regexp> <path>**
    
           **olcHomedirRegexp: regexp path**
                  These options configure a set of regular expressions to use
                  for matching and optionally remapping incoming
                  **homeDirectory** attribute values to pathnames on the local
                  filesystem.  $number expansion is supported to access
                  values captured in parentheses.
    
                  For example, to accept any directory starting with home and
                  use it verbatim on the local filesystem:
    
                  **homedir-regexp ^(/home/[-_/a-z0-9]+)$ $1**
    
                  To match the same set of directories, but create them
                  instead under exporthome, as is popular on Solaris NFS
                  servers:
    
                  **homedir-regexp ^(/home/[-_/a-z0-9]+)$ /export$1**
    
           **homedir-delete-style style**
    
           **olcHomedirDeleteStyle: style**
                  These options configure how deletes of posixAccount entries
                  or their attributes are handled; valid styles are **IGNORE,**
                  which does nothing, and **DELETE,** which immediately performs
                  a recursive delete on the home directory, and **ARCHIVE,**
                  which archives the home directory contents in a TAR file
                  for later examination.  The default is IGNORE.  Use with
                  caution.  ARCHIVE requires homedir-archive-path to be set,
                  or it functions similar to IGNORE.
    
           **homedir-archive-path <pathname>**
    
           **olcHomedirArchivePath: pathname**
                  These options specify the destination path for TAR files
                  created by the ARCHIVE delete style.
    


## REPLICATION



           The homedir overlay can operate on either master or replica
           systems with no changes.  See slapd.conf(5) or slapd-config(5) for
           more information on configure syncrepl.
    
           Partial replication (e.g. with filters) is especially useful for
           providing different provisioning options to different sets of
           users.
    


## EXAMPLE



           The following LDIF could be used to add this overlay to **cn=config**
           (adjust to suit)
    
                  dn: cn=module{0},cn=config
                  changetype: modify
                  add: olcModuleLoad
                  olcModuleLoad: homedir
    
                  dn: olcOverlay=homedir,olcDatabase={1}mdb,cn=config
                  changetype: add
                  objectClass: olcOverlayConfig
                  objectClass: olcHomedirConfig
                  olcOverlay: homedir
                  olcSkeletonPath: /etc/skel
                  olcMinimumUidNumber: 1000
                  olcHomedirRegexp: ^(/home/[-_/a-z0-9]+)$ /export/$1
                  olcHomedirDeleteStyle: ARCHIVE
                  olcHomedirArchivePath: /archive
    


## BUGS



           DELETE, MOD, and MODRDN operations that remove the unix attributes
           when delete style is set to DELETE will recursively delete the
           (regex modified) home directory from the disk.  Please be careful
           when deleting or changing values.
    
           MOD and MODRDN will correctly respond to homeDirectory changes and
           perform a non-destructive rename() operation on the filesystem,
           but this does not correctly retry with a recursive copy when
           moving between filesystems.
    
           The recursive copy/delete/chown/tar functions are not aware of
           ACLs, extended attributes, forks, sparse files, or hard links.
           Block and character device archival is non-portable, but should
           not be an issue in home directories, hopefully.
    
           Copying and archiving may not support files larger than 2GiB on
           some architectures.  Bare POSIX UStar archives cannot support
           internal files larger than 8GiB.  The current tar generator does
           not attempt to resolve uid/gid into symbolic names.
    
           No attempt is made to try to mkdir() the parent directories needed
           for a given home directory or archive path.
    


## FILES



           ETCDIR/slapd.conf
                  default slapd configuration file
    
           /etc/skel (or similar)
                  source of new homedir files.
    


## ACKNOWLEDGEMENTS



           This module was written in 2009 by Emily Backes for Symas
           Corporation.
    


* * *