I wouldn't build an inheritance-like system. If you ever need more granularity, you may run into unresolvable conflicts. An example: the manager role is needed to access reports, or to message customers. But then company A needs a worker role that can access reports, and company B needs a worker role that can message customers. You can't place both of those roles in the inheritance chain without one of them affecting the other.
You could have multiple roles per user. But I prefer to use a combination of roles and abilities: each user has a single role, and every role has N abilities. This way you can create as many roles as you need, and accomodate any special case.