--- user.admin.inc
+++ (clipboard)
@@ -756,28 +756,41 @@
   $roles = user_roles();
   foreach (element_children($form['permission']) as $key) {
     $row = array();
+    $rids = element_children($form['checkboxes']);
+    $one_role = count($rids) == 1;
     // Module name
     if (is_numeric($key)) {
       $row[] = array('data' => drupal_render($form['permission'][$key]), 'class' => array('module'), 'id' => 'module-' . $form['permission'][$key]['#id'], 'colspan' => count($form['role_names']['#value']) + 1);
     }
+    // Permission row
     else {
-      // Permission row.
-      $row[] = array(
+      $permission_row = array(
         'data' => drupal_render($form['permission'][$key]),
         'class' => array('permission'),
       );
-      foreach (element_children($form['checkboxes']) as $rid) {
+      if (!$one_role) {
+        $row[] = $permission_row;
+      }
+      foreach ($rids as $rid) {
         $form['checkboxes'][$rid][$key]['#title'] = $roles[$rid] . ': ' . $form['permission'][$key]['#markup'];
         $form['checkboxes'][$rid][$key]['#title_display'] = 'invisible';
         $row[] = array('data' => drupal_render($form['checkboxes'][$rid][$key]), 'class' => array('checkbox'));
       }
+      if ($one_role) {
+        $row[] = $permission_row;
+      }
     }
     $rows[] = $row;
   }
-  $header[] = (t('Permission'));
-  foreach (element_children($form['role_names']) as $rid) {
+  if (!$one_role) {
+    $header[] = (t('Permission'));
+  }
+  foreach ($rids as $rid) {
     $header[] = array('data' => drupal_render($form['role_names'][$rid]), 'class' => array('checkbox'));
   }
+  if ($one_role) {
+    $header[] = (t('Permission'));
+  }
   $output = theme('system_compact_link');
   $output .= theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('id' => 'permissions')));
   $output .= drupal_render_children($form);
