[Samba] how to use root preexec on user share with %U not as root user

Rowland penny rpenny at samba.org
Thu Apr 30 08:12:41 UTC 2020

On 30/04/2020 00:25, Jelle de Jong via samba wrote:
> Hello everybody,
> I am trying to get samba 4 to make a user dir without the use of ADUC 
> to set the homeDirectory, but with samba-tool user create only.
> I created a root preexec but the %U is filled with root and not the 
> username of the user.
> I need to user [users] and not the old [homes] because I got a GPO for 
> redirection to the //server/users/%USERNAME% and I need this folder to 
> be created before the first logon of the user otherwise it seems to go 
> bad.
> [users]
>     path = /srv/storage/users/
>     read only = No
>     root preexec = /usr/local/bin/samba-mkdir-home %U
> PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin/
> if [ ! -e /srv/storage/users/$1 ]; then
>     mkdir /srv/storage/users/$1
>     chown "$1":"domain user" /srv/storage/users/$1
> fi
> Kind regards,
> Jelle de Jong
Define 'first logon'.

If it is logging on via ssh or direct to the computer (via lightdm etc), 
then you need you would use pam_mkhomedir instead

That doesn't work if just connecting to a Samba share, so you have two 
options here:

Create a share:


     path = /path/to/users

    read only = no

Restart Samba

The first option is:

Go to ADUC, select a user, right click, select 'Options' and then the 
'Profiles' tab. At the bottom of the 'Profiles' tab select a letter e.g. 
'H:' then the shares UNC e.g. //Samba_servers_hostname/users/username, 
now click 'Apply', this should create the users homedir on the Samba server.

The second option relies on adding a line to the share:

     root preexec = /path/to/a/script %H %U

This will cause the script to be run whenever a user connects to the 
share and pass the users homedir path and username to the script. With 
this option, you do not need to touch the users profile tab in ADUC.


More information about the samba mailing list