[distcc] distccd on cygwin: CRITICAL! still have root privileges after trying to discard them

Benjamin R. Haskell distcc at benizi.com
Fri Nov 12 11:56:10 MST 2010


On Fri, 12 Nov 2010, Ivarsson, Magnus wrote:

> Hi, I am new to distcc but I must say that it looks really promising.
>
> Eager to get started I tried to start the distccd on a few machines 
> running windows xp and windows 7 and cygwin.
> On my own laptop it went well, but on the other machines (one xp and 
> one win7) the result was this:
>
>  bash-3.2# distccd --daemon --allow 1.2.3.4/24
>  distccd[4596] (dcc_preferred_user) Warning: no such user as "distcc"
>  distccd[4596] (dcc_discard_root) ERROR: setgid(65534) failed: Invalid argument
>  distccd[4596] (dcc_exit) exit: code 112; self: 0.000000 user 0.000000 sys; children: 0.000000 user 0.000000 sys
>
>
> Trying to set the user manually gets me a tiny step forward:
>
>  bash-3.2# distccd --daemon --allow 1.2.3.4/24 --user apa
>  distccd[4996] (dcc_discard_root) CRITICAL! still have root privileges after trying to discard them!
>  distccd[4996] (dcc_exit) exit: code 112; self: 0.000000 user 0.000000 sys; children: 0.000000 user 0.000000 sys
>
>
> The version information:
>
>  bash-3.2# distccd --version
>  distccd 2.18.3 i686-pc-cygwin (protocols 1 and 2) (default port 3632)
>    built Apr 25 2005 11:10:45
>  Copyright (C) 2002, 2003, 2004 by Martin Pool.
>  Includes miniLZO (C) 1996-2002 by Markus Franz Xaver Johannes Oberhumer.
>
>
>
> I have tried to search for solutions on the web but to no avail
>  - any clues would be greatly appreciated!

I think a long-term solution for Cygwin would be to add something like 
the example in 
http://www.cygwin.com/1.5/cygwin-ug-net/ntsec.html#ntsec-setuid
in the dcc_discard_root function in src/setuid.c (near line 126).

If you just want a hack (which almost surely opens a security hole), you 
can short-circuit the conditional on line 131.  (dcc_discard_root won't 
actually be discarding root, but you can just pretend it didn't fail.)

-- 
Best,
Ben


More information about the distcc mailing list