diff --git a/profiles/unl_profile/unl_profile.install b/profiles/unl_profile/unl_profile.install
index eccf2bccccfe6c643ac8ba795bebf93d0f0332ae..da07a1e5a9c6bd726b8f73ff5f4b5e022ff8a621 100644
--- a/profiles/unl_profile/unl_profile.install
+++ b/profiles/unl_profile/unl_profile.install
@@ -216,6 +216,8 @@ EOF;
       // shared tables across all sites
       'filter'           => $shared_prefix,
       'filter_format'    => $shared_prefix,
+      'role'             => $shared_prefix,
+      'role_permission'  => $shared_prefix,
       'unl_cas_settings' => $shared_prefix,
       'wysiwyg'          => $shared_prefix,
     );
@@ -267,43 +269,6 @@ EOF;
       . "WHERE name='filter_fallback_format' "
     );
 
-    // Create the Site Admin role
-    $site_admin_role = new stdClass();
-    $site_admin_role->name = 'Site Admin';
-    $site_admin_role->weight = 2;
-    user_role_save($site_admin_role);
-
-    // Assign most permissions to the Site Admin role.
-    $all_permissions = module_invoke_all('permission');
-    $all_filter_permissions = array_keys(module_invoke('filter', 'permission'));
-    unset($all_permissions['unl site creation']);
-    unset($all_permissions['unl grant all permissions']);
-    unset($all_permissions['unl administer administrator permissions']);
-    unset($all_permissions['administer modules']);
-    unset($all_permissions['administer themes']);
-    unset($all_permissions['administer software updates']);
-    unset($all_permissions['administer imce']);
-    unset($all_permissions['administer filters']);
-    foreach ($all_filter_permissions as $permission) {
-      unset($all_permissions[$permission]);
-    }
-    user_role_grant_permissions($site_admin_role->rid, array_keys($all_permissions));
-    
-    // Text Format/WYSIWYG specific permissions.
-    db_query("DELETE FROM {$new_prefix}role_permission WHERE permission LIKE :permission", array('permission' => 'use text format%'));
-    
-    $wysiwyg_permissions = array();
-    $data = db_query("SELECT DISTINCT permission FROM {$shared_prefix}role_permission WHERE permission LIKE :permission", array('permission' => 'use text format%'));
-    foreach ($data as $row) {
-      if (!in_array($row->permission, $all_filter_permissions)) {
-        continue;
-      }
-      $wysiwyg_permissions[] = $row->permission;
-    }
-    user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, $wysiwyg_permissions);
-    user_role_grant_permissions(variable_get('user_admin_role'), $wysiwyg_permissions);
-    user_role_grant_permissions($site_admin_role->rid, $wysiwyg_permissions);
-
     // If a site admin has been specified, add that user and add them to the Site Admin role.
     $data = db_query(
       "SELECT * "
@@ -323,6 +288,7 @@ EOF;
     );
     foreach ($data as $row) {
       if ($row->site_admin) {
+        $site_admin_role = user_role_load_by_name('Site Admin');
         $account = unl_cas_import_user($row->site_admin);
         $userData = array(
           'roles'    => array($site_admin_role->rid => $site_admin_role->name),
diff --git a/sites/all/modules/unl/unl.module b/sites/all/modules/unl/unl.module
index ce4397ed5dbcf8a8a016ec85e8278c2672e74231..e4c32476e203c6335d227a78759569ecca0c73fa 100644
--- a/sites/all/modules/unl/unl.module
+++ b/sites/all/modules/unl/unl.module
@@ -434,7 +434,7 @@ function unl_form_alter(&$form, $form_state, $form_id) {
   }
 
   // Add the Roles checkboxes to the user edit form for users with ability to 'Administer users' but not 'Administer permissions' (Code below partially taken from user.module)
-  if (in_array($form_id, array('user_register_form', 'user_profile_form')) && !user_access('administer permissions')) {
+  if (in_array($form_id, array('user_register_form', 'user_profile_form')) && user_access('administer users') && !user_access('administer permissions')) {
     $register = ($form['#user']->uid > 0 ? FALSE : TRUE);
     $account = $form['#user'];
     $roles = array_map('check_plain', user_roles(TRUE));