On Fri, Sep 16, 2016, at 07:54 PM, Carlos Velasco wrote:
> >> I think idled ought to become_cyrus itself. It shouldn't continue
> >> running as root even if it was started as root.
> >
> > The attached patch seems to resolve this for me. Karl, does it help in
> > your case?
> >
> > It's against the current cyrus-imapd-2.5 from git, but should apply
> > cleanly to the 2.5.7 sources as well.
>
> This should work.
> Ellie, can you remove a dup in master.c too?
>
> #if defined(__linux__) && defined(HAVE_LIBCAP)
> if (become_cyrus(/*is_master*/1) != 0) {
> syslog(LOG_ERR, "can't change to the cyrus user: %m");
> exit(1);
> }
> #endif
>
> masterconf_getsection("START", &add_start, NULL);
> ....
> #if defined(__linux__) && defined(HAVE_LIBCAP)
> if (become_cyrus(/*is_master*/1) != 0) {
> syslog(LOG_ERR, "can't change to the cyrus user: %m");
> exit(1);
> }
> #endif
>
>
> Last one is a dup.
>
> Regards,
> Carlos Velasco
These aren't duplicated (except in your email). If you read closely,
the second one has the opposite #if condition from the first.
master needs root privileges to initialise its services, unless libcap
is available. What is going on here is:
1) If libcap is available, drop root now, we don't need it anymore
2) Initialise services
3) If libcap is not available, drop root now, we don't need it anymore
Cheers,
ellie