|normality(5)||definition of what types of normalities different users may have.||normality(5)|
<normality file> := <normality file> <line> | ; <line> := <normality type> ': ' <userlist> | <normality type> '! ' <userlist> | <normality type> '= ' <normality tags> | <comment> <normality type> := [A-Z][a-zA-Z0-9]+ <userlist> := <username> ', ' <userlist> ';\n' | <username> ';\n' <normality tags> := <normality tag> ', ' <normality tags> ';\n' | <normality tag> ';\n' <normality tag> := 'marriage' | 'love-relation' | 'nice-job' | 'money' | 'spare-time' | 'friends' | 'no-pager' | 'vacation' <comment> := '#' .* '\n'
Let's say that we have a system with three normality types, \fIfoo, \fIbar and \fIgazonk and two users, cucumber and onion.
Now, a line like "foo! onion;" would exclude onion from having any of the real-life things specified by the foo type, even if that (or those) things appear in another normality type. So, the disallow syntax overrides the allow syntax (specified by "<type>: <username>...").
There is always an implicit type named ``all'', that contains all normality tags.
For all system administrators, you have an implicit rule, "all! asr".
# Normality file for a sad system # Our users are onion, cucumber, jdoe, jrl and washu animetype= love-relation, nice-job, friends, spare-time; notworst= love-relation, nice-job, friends; sysadm= friends; # All normality types we will use are declared # Now let's do the magic stuff... all: jdoe, jrl; animetype: washu; sysadm: cucumber; all! onion; # Now, this is fairly easy, OK?
Has a tendecy to create small discontinuities in the velvet of reality whenever there are syntax errors in the normality file.