Some small notes on the patch to consider before it is commited:
Naming like: pc_has_permission(sd,PC_PERM_DISABLE_STORE), is a bit confusing I think. So, has permission to not to have permission to open store, or something like that. I think it is better to avoid unnecessary negations. In my opinion permissions like: pickup, exp, store etc are more expressive than the disable_ prefixed counterparts.
The default settings should almost always preserve the original behavior. For instance, if gm's were able to pick up items until now, the default for disable_pickup should be false in groups.conf.
And finaly, if you increased the number of digits of an enum, append the additional 0's to the beginning of the other constants to match the style.
Other than that, it looks ok for me, nice work
Edit: just noticed, there are already some other disable_ prefixed permissions, however I still do not think, those are the right way to handle them. Alway better to keep it simple.