Seth Arnold said:

> Note that your life may be significantly easier if you put all untrusted
> users in one group, trusted users in another group, and fiddle with
> group and world execute permissions on all the executables on your
> system. The executables anyone can run (e.g., pine) can be made world
> executable. The executables only trusted users can run can be made owned
> by their group, and group executable.

This can be an effective strategy, but the way you describe it is
actually a little more complex than it needs to be.  You do not
actually need to have a trusted group; you only need an untrusted
group.  The key here is the often overlooked fact that groups can be
used to TAKE AWAY privileges as easily as they can be used to grant
access.  This is because of the way Unix permissions work.  

If you are the owner of a file, when permissions are checked, the
kernel will look at the owner permissions only, and make access
decisions based on those.  If you are not the owner, it will next look
to see if the group of the file is one you belong to (exactly which
groups it checks, e.g. primary and/or auxilliary, is somewhat
dependent upon implementation).  If you do belong to the group that
owns the file, the kernel will look at the permissions for the group
AND STOP THERE, and make access decisions based on those permissions,
REGARDLESS OF LESS RESTRICTIVE PERMISSIONS FOR "OTHER."

So, for example, if you had a group "untrusted" that you didn't want
to access a particular executable, say, /bin/false, you'd set the
permissions like this:

  -r-x---r-x    1 root     untrusted     4436 Jan 16  2001 /bin/false

Anyone in the untrusted group can now no longer run /bin/false.
Everyone else, not being a member of the untrusted group, can run it
as they please.

-- 
Derek Martin
Senior System Administrator
Mission Critical Linux
[EMAIL PROTECTED]

Reply via email to