X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=blobdiff_plain;f=libatalk%2Futil%2Fnetatalk_conf.c;h=b51b2a0d13cffad8d1b7c70bbcc4e3077c22e5f2;hp=7556124559a2aacb6439a1532905f0da355ca7c7;hb=cc6053806460d7bccfc45ac85529bf696136aba6;hpb=b8131f67b3a0ec21aa2055908ea59fc5559c6f72 diff --git a/libatalk/util/netatalk_conf.c b/libatalk/util/netatalk_conf.c index 75561245..b51b2a0d 100644 --- a/libatalk/util/netatalk_conf.c +++ b/libatalk/util/netatalk_conf.c @@ -1323,6 +1323,9 @@ int load_volumes(AFPObj *obj) LOG(log_debug, logtype_afpd, "load_volumes: BEGIN"); + if (obj->uid) + pwent = getpwuid(obj->uid); + if (Volumes) { if (!volfile_changed(&obj->options)) goto EC_CLEANUP; @@ -1330,6 +1333,15 @@ int load_volumes(AFPObj *obj) for (vol = Volumes; vol; vol = vol->v_next) { vol->v_deleted = 1; } + if (obj->uid) { + become_root(); + ret = set_groups(obj, pwent); + unbecome_root(); + if (ret != 0) { + LOG(log_error, logtype_afpd, "load_volumes: set_groups: %s", strerror(errno)); + EC_FAIL; + } + } } else { LOG(log_debug, logtype_afpd, "load_volumes: no volumes yet"); EC_ZERO_LOG( lstat(obj->options.configfile, &st) ); @@ -1354,9 +1366,6 @@ int load_volumes(AFPObj *obj) break; } - if (obj->uid) - pwent = getpwuid(obj->uid); - if (obj->iniconfig) iniparser_freedict(obj->iniconfig); LOG(log_debug, logtype_afpd, "load_volumes: loading: %s", obj->options.configfile);