> I teach a Linux basics course and each term I have the problem of students
> who do an su to become root, then rather than exiting, they su again to go
> back to their regular account.  The trouble is identifying when someone has
> done this (they usually don't remember).  The "who" command only shows login
> shells (AFAIK) so it does not reveal when someone has su-ed.
> 
> Does anyone know of a way to list all of the users currently logged in,
> including when someone has su-ed to become another user?

Don't allow them to 'su root' but instead give them access to root
commands using sudo.  Then they'd "sudo ifconfig blahblahblah" each time
to run ifconfig, etc, and don't get a shell from which they'd be running
around as root itself, and wouldn't need to su back to their uid.[1]

If you do want to allow actual 'su' then you can simply check ps to
see what processes chains have consecutive 'su' processes.  Analyzing
'pstree' output with perl would probably be pretty easy.  pstree will
handle organizing parent and child processes, so you'd just need to
watch to see when two su processes exist in a chain.

This could easily be defeated as well.  Someone could create a two line
C program to setuid and exec a shell s.t. there's no 'su' process in
the list, but I assume you're just looking to watch for casual 'su'
overuse.



[1] Of course you need to make sure that you lock things down well - for
example if you allowed 'sudo vi' then someone could spawn a shell from
vi to be at a root prompt.  Locking down sudo is tough - start out very
restrictive and add specific commands as they're needed.

--
Brian Hatch                  A closed mouth
   Systems and                gathers no feet.
   Security Engineer
www.hackinglinuxexposed.com

Every message PGP signed

Attachment: pgp00000.pgp
Description: PGP signature

Reply via email to