This now just relies on the private dir parameter, which remains.
Andrew Bartlett
member server support does not work yet.
The following parameters have been removed:
-- passdb backend: accounts are now stored in a LDB-based SAM database,
- see 'sam database' below.
+- passdb backend: accounts are now stored in a LDB-based SAM database
- update encrypted
- public
- guest ok
Default: smb rpc nbt wrepl ldap cldap web kdc
-+ sam database
- Location of the SAM (account database) database. This should be a
- LDB URL.
-
- Default: set at compile-time
-
+ spoolss database
Spoolss (printer) DCE/RPC server database. This should be a LDB URL.
struct cli_credentials *credentials;
int ret;
- url = lpcfg_sam_url(lp_ctx);
+ url = "sam.ldb";
credentials = samdb_credentials(lp_ctx);
ldb = ldb_wrap_find(url, ev_ctx, lp_ctx, session_info, credentials, flags);
char *szAutoServices;
char *szPasswdChat;
char *szShareBackend;
- char *szSAM_URL;
char *szIDMAP_URL;
char *szSECRETS_URL;
char *szSPOOLSS_URL;
{"null passwords", P_BOOL, P_GLOBAL, GLOBAL_VAR(bNullPasswords), NULL, NULL},
{"obey pam restrictions", P_BOOL, P_GLOBAL, GLOBAL_VAR(bObeyPamRestrictions), NULL, NULL},
{"password server", P_LIST, P_GLOBAL, GLOBAL_VAR(szPasswordServers), NULL, NULL},
- {"sam database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSAM_URL), NULL, NULL},
{"idmap database", P_STRING, P_GLOBAL, GLOBAL_VAR(szIDMAP_URL), NULL, NULL},
{"secrets database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSECRETS_URL), NULL, NULL},
{"spoolss database", P_STRING, P_GLOBAL, GLOBAL_VAR(szSPOOLSS_URL), NULL, NULL},
FN_GLOBAL_BOOL(tls_enabled, tls_enabled)
FN_GLOBAL_STRING(logfile, logfile)
FN_GLOBAL_STRING(share_backend, szShareBackend)
-FN_GLOBAL_STRING(sam_url, szSAM_URL)
FN_GLOBAL_STRING(idmap_url, szIDMAP_URL)
FN_GLOBAL_STRING(secrets_url, szSECRETS_URL)
FN_GLOBAL_STRING(spoolss_url, szSPOOLSS_URL)
lpcfg_do_global_parameter(lp_ctx, "auth methods:member server", "anonymous sam winbind");
lpcfg_do_global_parameter(lp_ctx, "auth methods:standalone", "anonymous sam_ignoredomain");
lpcfg_do_global_parameter(lp_ctx, "private dir", dyn_PRIVATE_DIR);
- lpcfg_do_global_parameter(lp_ctx, "sam database", "sam.ldb");
lpcfg_do_global_parameter(lp_ctx, "idmap database", "idmap.ldb");
lpcfg_do_global_parameter(lp_ctx, "secrets database", "secrets.ldb");
lpcfg_do_global_parameter(lp_ctx, "spoolss database", "spoolss.ldb");
Py_RETURN_NONE;
}
+static PyObject *py_samdb_url(PyObject *self)
+{
+ struct loadparm_context *lp_ctx = PyLoadparmContext_AsLoadparmContext(self);
+ return PyString_FromFormat("tdb://%s/sam.ldb", lpcfg_private_dir(lp_ctx));
+}
+
static PyMethodDef py_lp_ctx_methods[] = {
{ "load", (PyCFunction)py_lp_ctx_load, METH_VARARGS,
"S.services() -> list" },
{ "dump", (PyCFunction)py_lp_dump, METH_VARARGS,
"S.dump(stream, show_defaults=False)" },
+ { "samdb_url", (PyCFunction)py_samdb_url, METH_NOARGS,
+ "S.samdb_url() -> string\n"
+ "Returns the current URL for sam.ldb." },
{ NULL }
};
global lp, am_rodc
vars = {}
- samdb = SamDB(url=lp.get("sam database"), session_info=system_session(),
+ samdb = SamDB(url=lp.samdb_url(), session_info=system_session(),
lp=lp)
vars['DNSDOMAIN'] = lp.get('realm').lower()
else:
credentials = None
- samdb = SamDB(url=lp.get("sam database"), session_info=system_session(), credentials=credentials, lp=lp)
+ samdb = SamDB(url=lp.samdb_url(), session_info=system_session(), credentials=credentials, lp=lp)
except ldb.LdbError, (num, msg):
- print("Unable to open sam database %s : %s" % (lp.get("sam database"), msg))
+ print("Unable to open sam database %s : %s" % (lp.samdb_url(), msg))
sys.exit(1)
:param session_info: Session info to use
:param credentials: Credentials to access the SamDB with
"""
- return SamDB(url=self.lp.get("sam database"),
+ return SamDB(url=self.lp.samdb_url(),
session_info=session_info, credentials=credentials,
lp=self.lp)
"""
if lp.get("realm") == "":
raise Exception("Realm empty")
- samdb = Ldb(lp.get("sam database"), session_info=session_info,
+ samdb = Ldb(lp.samdb_url(), session_info=session_info,
credentials=credentials, lp=lp)
if len(samdb.search("(cn=Administrator)")) != 1:
raise ProvisioningError("No administrator account found")
paths.keytab = "secrets.keytab"
paths.shareconf = os.path.join(paths.private_dir, "share.ldb")
- paths.samdb = os.path.join(paths.private_dir,
- lp.get("sam database") or "samdb.ldb")
+ paths.samdb = os.path.join(paths.private_dir, "sam.ldb")
paths.idmapdb = os.path.join(paths.private_dir,
lp.get("idmap database") or "idmap.ldb")
paths.secrets = os.path.join(paths.private_dir,
if not auto_connect:
url = None
elif url is None and lp is not None:
- url = lp.get("sam database")
+ url = lp.samdb_url()
super(SamDB, self).__init__(url=url, lp=lp, modules_dir=modules_dir,
session_info=session_info, credentials=credentials, flags=flags,
struct ldb_message *msg;
int ldb_ret;
uint32_t i;
- char *sam_ldb_path;
+ char *private_dir;
const char *address;
struct nbt_name name;
const char *netbios_name;
talloc_unlink(s, ldb);
lp_ctx = libnet_vampire_cb_lp_ctx(s);
- sam_ldb_path = talloc_asprintf(s, "%s/%s", location, "private/sam.ldb");
- lpcfg_set_cmdline(lp_ctx, "sam database", sam_ldb_path);
- torture_comment(torture, "Reopen the SAM LDB with system credentials and all replicated data: %s\n", sam_ldb_path);
+ private_dir = talloc_asprintf(s, "%s/%s", location, "private");
+ lpcfg_set_cmdline(lp_ctx, "private dir", private_dir);
+ torture_comment(torture, "Reopen the SAM LDB with system credentials and all replicated data: %s\n", private_dir);
ldb = samdb_connect(s, torture->ev, lp_ctx, system_session(lp_ctx), 0);
torture_assert_goto(torture, ldb != NULL, ret, cleanup,
talloc_asprintf(torture,
- "Failed to open '%s'\n", sam_ldb_path));
+ "Failed to open '%s/sam.ldb'\n", private_dir));
torture_assert_goto(torture, dsdb_uses_global_schema(ldb), ret, cleanup,
"Uses global schema");