#include "../../citserver.h"
#include "../../config.h"
+void cdb_chmod_data(void);
+
// Header files for all available backends must be included here.
#include "../berkeley_db/berkeley_db.h"
// This function is responsible for choosing and initializing a back end.
void cdb_init_backends(void) {
+ cdb_chmod_data();
bdb_init_backend(); // for now, this is the only one, so we select it always.
}
}
// Now that we've bound the sockets, change to the Citadel user id and its corresponding group ids
- if (drop_root_perms) {
- cdb_chmod_data(); // make sure we own our data files
- getpwuid_r(ctdluid, &pw, pwbuf, sizeof(pwbuf), &pwp);
- if (pwp == NULL) {
- syslog(LOG_ERR, "main: WARNING, getpwuid(%ld): %m Group IDs will be incorrect.", (long)ctdluid);
- }
- else {
- initgroups(pw.pw_name, pw.pw_gid);
- if (setgid(pw.pw_gid)) {
- syslog(LOG_ERR, "main: setgid(%ld): %m", (long)pw.pw_gid);
- }
+ getpwuid_r(ctdluid, &pw, pwbuf, sizeof(pwbuf), &pwp);
+ if (pwp == NULL) {
+ syslog(LOG_ERR, "main: WARNING, getpwuid(%ld): %m Group IDs will be incorrect.", (long)ctdluid);
+ }
+ else {
+ initgroups(pw.pw_name, pw.pw_gid);
+ if (setgid(pw.pw_gid)) {
+ syslog(LOG_ERR, "main: setgid(%ld): %m", (long)pw.pw_gid);
}
+ }
+ if (drop_root_perms) {
syslog(LOG_INFO, "main: changing uid to %ld", (long)ctdluid);
if (setuid(ctdluid) != 0) {
syslog(LOG_ERR, "main: setuid() failed: %m");