On Friday, May 3, 2002, at 07:03 , Tor Hildrum wrote:

>>> Could someone point me to a page that gives information about all the
>>> pitfalls that are "available" when running a Perl or CGI script with the
>>> suid bit set?
>
> <snip - the expected stuff> :)

sorry... didn't know that you knew that already. My Bad.

>> If you really need setuid processes - then one of the
>> principle tricks remains to have them 'spawned' from a
>> nice harder to hack piece of compiled 'c' code.
>
> So, basically, call a compiled c-code from my Perl-script, and have the
> compiled c-code start the suid process?

well it is sorta 'why does this need to run as a specific user'
sort of question??? In the case of most apache driven stuff,
it should generically be running as 'nobody' to begin with.

{ hence the whole CGI thing. which I would be hard pressed
to see why you want that to be anything other than - just
write it, and install it in the cgi-bin du jure. }

The moment that you NEED to have 'root privilege' to do
x-y-z you REALLY need to have a really good reason to do that
and not merely because your code is bodgy and you want to
get around some bollock in your software.

{trust me, I've seen enough of those gags...}

> Now I only need to learn how to program either C or C++ :)

If you know perl, c is not that hard to pick up...
May I offer you as compensation some old crufty c:

http://www.wetware.com/drieux/src/unix/c/setgid_test.txt

this was 'c' code aimed at running what were shell scripts
that managed the init process models for daemon management.

IF you really wind up going that way - send me email B/C...

I hope that helps - its from some old stuff we did back
with Warpspeed Communications Inc. We used the tactic
of having a special daemon - mr_daemon - which ran without
a login shell - this is actually just 'demo junk' code -
        { hence not covered under any NDA. }
since the actual process went on to require more fascism
about where 'runnable code' was actually installed - and
then all this did was do the setgid/setuid - AND DO IT
IN THAT ORDER!!!!! In this case the core init script would
be called by root at boot/shutdown times - and we clearly
did not want daemons running as root.... so you need to
setgid WHILE you are root, before doing the setuid 'down'
to a more practical entity....

If you setuid down - you will not have the permissions to
do the setgid side of the game...

so the trick is to make the code - and then make sure
when it gets installed it is OWNED by the UID that
the puppy will do the setuid to....

ciao
drieux

---


"You can have my root access, after you
rip it from my cold dead hand..."


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to