As far as I can see, the smb.conf parameter 'root dir' prevents an auth module like 'script' from being loaded. In auth/auth.c the initialize-function of the module is called. This calles itself load_auth_module(), which calls lib_path() which reads the lib path from the setting being set by the make file. These paths are absolute to the file system root dir and differ at runtime from the samba root dir set by the config parameter 'root dir'. It seems not to help to specify the 'auth method' with the library name absolute according to samba root dir, since the entry in backends is different and auth_init_function_entry() returns false.