How to create a new role with authenticated user permissions
Got it. following code will achieve the this functionality,

$role = new stdClass();
$role-&gt;name = 'New role';
// load the authenticated user role
$auth_role = user_role_load(DRUPAL_AUTHENTICATED_RID);
// Give the weight more than authenticate user, so that
// New role will have all the authenticated user permissions
// by default.
$role-&gt;weight = $auth_role-&gt;weight + 1;
user_role_save($role);
$auth_permissions = user_role_permissions(array(DRUPAL_AUTHENTICATED_RID =&gt; 'authenticated users'));
$auth_permissions += array('other permissions');
// Grant permissions to our 'New role' role
user_role_grant_permissions($role-&gt;rid, array_keys($auth_permissions[DRUPAL_AUTHENTICATED_RID]));