[Tfug] Ideas for handling group based allow/deny permissions?

Choprboy choprboy at dakotacom.net
Wed Jun 23 15:11:44 MST 2004


Hello all,

I'm currently working on writing a document management system for 
storing/distributing docs/pictures/etc. between different people in a 
company. Hopefully to be released GPL some day. I am developing this with a 
"group" security policy so that a document xyz.txt may have read/write 
permissions for groups A, C, and D and deny permission for group F. A user 
wanting to look/search for that document may be part of groups B, C, and E 
(the idea being that when you grow to 10,000s of documents and users, it is 
far easier to track/sort permissions then listing every single user 
permission for every single document).

I am currently trying to figure out how to handle the problem that occurs when 
users are members of multiple groups and you allow/deny members in 
overlapping groups... Has anyone done something like this before and how? I 
see a couple options, but nothing really works in all cases.

For instance, consider a company HR document detailing benefits. It applies to 
all full time employees, but not the commisioned sales staff, so you don;t 
want them to see it. You set the permissions so that it is readable by 
everyone in the "employees" group, but denied to anyone in the "sales" group. 
In the following users:

Alice: Marketing coordinator, member of "employees" and "marketing" (etc.)
Bob: Sales, member of "employees" and "sales"

So Alice gets to look at the document, but Bob is denied... But now think 
about Bob's manager Ted:

Ted: Sales manager, member of "employees" "managers" and "sales"

Ted should be able view the document because he is a manager, but because he 
is part of the "sales" group (because he manages/reviews their work) he is 
forbidden from viewing it... So what to do???

I see 2 basic ways around it:
1)Do an "allow group && deny group && allow individual && deny individual" 
type security check, which gets combersome to remember "Ted" must be 
specifically allowed every time.
2)Make lots of different groups (i.e. "sales", "commisioned-sales", 
"salaried-sales", "part-time-sales", etc.) which gets very cumbersome to 
manage users in all the different groups.

Neither of these approaches handles the "user doesn't understand permision 
AND'ng" problem and I don;t think either handles the scaling to 1000's of 
users problem either. Any other suggestions?

Adrian


More information about the tfug mailing list