For example, uid 1 grants role A some permissions as Article: Create new content, Basic page: Create new content, then users with role A can grant these 2 permissions to other roles in the same interface as /admin/people/permissions.
I use Permissions Lock to achieve this. You can give your role A the 'administer permissions' ability and then lock off all of the ones that you do not wish them to have access to. It's a bit backwards in that you have to go through and tick all of the checkboxes except the ones you want to provide, but it works.
Also you need to check it each time you install new modules or go through an update that provides new permissions as the new permissions default to 'available'.
You know well about the permissions.
1) One step is to give the administrator role, if you have no problem with this.
2) Second option is that you can admin/people/permissions tab and search for "User" heading and tick under that Role and against the Administer permissions and Administer users accordingly.
Hope it will help.
take a look at RoleAssign module:
RoleAssign specifically allows site administrators to further delegate the task of managing user's roles while withholding the Administer permissions permission.
RoleAssign introduces a new permission called Assign roles. Users with this permission are able to assign selected roles to still other users. Only users with the Administer permissions permission may select which roles are available for assignment through this module.