# Roles `guillotina` implements robust ACL security. An overview of our security features are: * Users are given roles and groups * Roles are granted permissions * Groups are granted roles * Roles can be granted to users on specific objects ## Requests security By default request has participation of anonymous user plus the ones added by auth plugins ## Databases, Application and static files objects Databases and static files have a specific permission system. They don't have roles by default and the permissions are specified to root user * guillotina.AddContainer * guillotina.GetContainers * guillotina.DeleteContainers * guillotina.AccessContent * guillotina.GetDatabases Anonymous user has on DB/StaticFiles/StaticDirectories/Application object : * guillotina.AccessContent ## Roles in guillotina container objects Defined at: * [guillotina/permissions.py](https://github.com/plone/guillotina/blob/master/guillotina/permissions.py "Link to permissions.py on GitHub") ## Content Related ### guillotina.Anonymous * guillotina.AccessPreflight ### guillotina.Member * guillotina.AccessContent ### guillotina.Reader * guillotina.AccessContent * guillotina.ViewContent ### guillotina.Editor * guillotina.AccessContent * guillotina.ViewContent * guillotina.ModifyContent * guillotina.ReindexContent ### guillotina.Reviewer ### guillotina.Owner * guillotina.AccessContent * guillotina.ViewContent * guillotina.ModifyContent * guillotina.DeleteContent * guillotina.AddContent * guillotina.ChangePermissions * guillotina.SeePermissions * guillotina.ReindexContent ## Container/App Roles ### guillotina.ContainerAdmin * guillotina.AccessContent * guillotina.ManageAddons * guillotina.RegisterConfigurations * guillotina.WriteConfiguration * guillotina.ReadConfiguration * guillotina.ManageCatalog ### guillotina.ContainerDeleter * guillotina.DeletePortal ## Default roles on Guillotina Container They are stored in annotations using `IRolePermissionMap`. Created objects set the `guillotina.Owner` role to the user who created it. ## Default groups on Guillotina Container ### Managers #### RootParticipation There is a `root` user who has permissions to all containers: DB/APP permissions are defined on factory/content.py The definition of the `root` user can be found on auth/users.py. Notice how it is assigned to the `"Managers"` group by default, which in turn has the following hardcoded roles: * guillotina.ContainerAdmin * guillotina.ContainerDeleter * guillotina.Owner * guillotina.Member * guillotina.Manager Thus, these are the default roles for the `root` user.