From: Art Cancro Date: Fri, 1 Sep 2023 03:10:28 +0000 (-0400) Subject: Moved the creation of the data directory. X-Git-Tag: v991~1 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=e02efda5c74ec844e6992ed38ec3e2171ce4d3dd Moved the creation of the data directory. It was happening too late in the new code and failing on some new installations. --- diff --git a/citadel/server/backends/common/database.c b/citadel/server/backends/common/database.c index 934d5553e..e3024f4d1 100644 --- a/citadel/server/backends/common/database.c +++ b/citadel/server/backends/common/database.c @@ -17,6 +17,8 @@ #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" @@ -41,6 +43,7 @@ void (*cdb_tick)(void) = NULL; // 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. } diff --git a/citadel/server/server_main.c b/citadel/server/server_main.c index cd757a140..349213d6f 100644 --- a/citadel/server/server_main.c +++ b/citadel/server/server_main.c @@ -261,18 +261,17 @@ int main(int argc, char **argv) { } // 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");