[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Sheflug] running as root
Hmmm, I'm working from memory here, so I reserve the right to be
misinformed.... ;)))
On Wed, 3 May 2000, Chris J/#6 wrote:
> > Just kidding... 'chmod +s [file]' sets the 's' bit (bet you never knew
> > about that?), which means 'Run me as root'. Or, 'Let me do what the heck I
> > please' ;))
. I also forgot chown root:user [file], although user may be different on
your system, just choose any valid group...
> Unless Linux's system has changed recently, set-uid scripts *won't* work - 
> they're considered a huuuuuuuuuuuuuuuuuuge security hole.
Well, I've just tried it and it works. (2.0.36). I don't think I've
buggered the kernel in any way, although it's been going for years (well,
more than one!) now, so it's possible I've forgotton. But anyway, I think
you are confusing real & effective UIDs and GUIDs here. 
> Which they are, 
> when you know how to get round them.
I *did* point this out... 
> Race type conditions are ripe :)
Err, are you sure about that? Off the top of my head, I can't think of
one. 
> Try it 
> yourself - a script with two lines:
> 	#!/bin/sh
> 	id
> 
> chown root.root then chmod 4755, and run it.
Try this: (it's C, obviously)
#include <stdio.h>
#include <unistd.h>
void main(void) { /* I know you don't void(void), just for the record */
	printf("User id: %d\nis effectively: %d\n", getuid(), geteuid());	
	printf("Group id: %d\nis effectively: %d\n", getgid(), getegid());
}
Save as test.c, or something, type 'make test'. Play around with it. EUID:
root.
> The best thing to do is to use sudo to run the script, or, if you *know* the 
> script is secure, create a C wrapper for it along the lines of:
Sudo is good for accounting ;)
> 	main()
You're worse than me ;)
> 	{
> 		system ("/usr/bin/myshellscript");
> 		return 0;
> 	}
Although at least you return int .. :)))
> > For this kind of thing, I guess it's okay, but remember running as root in
> > general is not /fabulous/, and you instantly loose any Linux Guru points
> > that you might have accumulated ;)
> 
> It depends what you want to do in the script really :) Processing log files 
> can be done with a simple permissions change; scripts to addusers should 
> really be written in C or Perl (with sperl) and have silly amounts of sanity 
> checks. If its admin stuff, look at setting up sudo. If its on a multi-user 
> box and you trust your users (ie, you'd give them the root password happily), 
> then its a non-issue. If you don't trust your users, then careful how you go 
As always, it depends on circumstances...
Cheers,
Alex.
---------------------------------------------------------------------
Sheffield Linux User's Group - http://www.sheflug.co.uk
To unsubscribe from this list send mail to
- <sheflug-request [at] vuw.ac.nz> - with the word 
 "unsubscribe" in the body of the message. 
  GNU the choice of a complete generation.