Index: modules/system/system.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.test,v
retrieving revision 1.74
diff -u -r1.74 system.test
--- modules/system/system.test	26 Aug 2009 10:53:45 -0000	1.74
+++ modules/system/system.test	26 Aug 2009 13:47:53 -0000
@@ -530,7 +530,7 @@
     parent::setUp();
 
     // Create an administrative user.
-    $this->admin_user = $this->drupalCreateUser(array('administer site configuration', 'administer blocks'));
+    $this->admin_user = $this->drupalCreateUser(array('administer site configuration', 'administer blocks', 'administer site information'));
     $this->drupalLogin($this->admin_user);
   }
 
@@ -607,7 +607,7 @@
     parent::setUp();
 
     // Create an administrative user.
-    $this->admin_user = $this->drupalCreateUser(array('administer site configuration'));
+    $this->admin_user = $this->drupalCreateUser(array('administer site configuration', 'administer site information'));
     $this->drupalLogin($this->admin_user);
   }
 
@@ -841,7 +841,7 @@
     parent::setUp('system_test');
 
     // Create admin user, log in admin user, and create one node.
-    $this->admin_user = $this->drupalCreateUser(array('access content', 'administer site configuration'));
+    $this->admin_user = $this->drupalCreateUser(array('access content', 'administer site configuration', 'administer site information'));
     $this->drupalLogin($this->admin_user);
     $this->node_path = "node/" . $this->drupalCreateNode(array('promote' => 1))->nid;
 
@@ -1024,7 +1024,7 @@
   function setUp() {
     parent::setUp();
 
-    $this->admin_user = $this->drupalCreateUser(array('access administration pages', 'administer site configuration', 'bypass node access'));
+    $this->admin_user = $this->drupalCreateUser(array('access administration pages', 'administer site configuration', 'bypass node access', 'administer site appearance'));
     $this->drupalLogin($this->admin_user);
     $this->node = $this->drupalCreateNode();
   }
Index: modules/system/system.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.install,v
retrieving revision 1.379
diff -u -r1.379 system.install
--- modules/system/system.install	24 Aug 2009 00:14:22 -0000	1.379
+++ modules/system/system.install	26 Aug 2009 13:47:52 -0000
@@ -2458,6 +2458,33 @@
 }
 
 /**
+ * Split site appearance and info from main config perm, see issue #241667.
+ */
+function system_update_7037() {
+  $ret = array();
+  // Get existing roles that can 'administer site configuration'.
+  $rids = array();
+  $rids = db_query("SELECT rid FROM {role_permission} WHERE permission = :perm", array(':perm' => 'administer site configuration'))->fetchCol();
+  // None found.
+  if (empty($rids)) {
+    return $ret;
+  }
+  $insert = db_insert('role_permission')->fields(array('rid', 'permission'));
+  foreach ($rids as $rid) {
+    $insert->values(array(
+      'rid' => $rid,
+      'permission' => 'administer site appearance',
+    ));
+    $insert->values(array(
+      'rid' => $rid,
+      'permission' => 'administer site information',
+    ));
+  }
+  $insert->execute();
+  return $ret;
+}
+
+/**
  * @} End of "defgroup updates-6.x-to-7.x"
  * The next series of updates should start at 8000.
  */
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.777
diff -u -r1.777 system.module
--- modules/system/system.module	26 Aug 2009 10:53:45 -0000	1.777
+++ modules/system/system.module	26 Aug 2009 13:47:52 -0000
@@ -214,7 +214,11 @@
   return array(
     'administer site configuration' => array(
       'title' => t('Administer site configuration'),
-      'description' => t('Configure site-wide settings such as module or theme administration settings.'),
+      'description' => t('Configure site-wide settings for modules and view system configuration warnings.'),
+    ),
+    'administer site information' => array(
+      'title' => t('Administer site information'),
+      'description' => t('Manage basic site information, such as the site name, slogan, and e-mail address.'),
     ),
     'administer actions' => array(
       'title' => t('Administer actions'),
@@ -236,6 +240,10 @@
       'title' => t('Access site reports'),
       'description' => t('View reports from system logs and other status information.'),
     ),
+    'administer site appearance' => array(
+      'title' => t('Administer site appearance'),
+      'description' => t('Choose the site theme and manage theme settings.'),
+    ),
     'block IP addresses' => array(
       'title' => t('Block IP addresses'),
       'description' => t('Block IP addresses from accessing your site.'),
@@ -587,7 +595,7 @@
     'description' => 'Select and configure your site theme.',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('system_themes_form'),
-    'access arguments' => array('administer site configuration'),
+    'access arguments' => array('administer site appearance'),
     'position' => 'left',
     'weight' => -6,
     'file' => 'system.admin.inc',
@@ -602,7 +610,7 @@
   $items['admin/appearance/settings'] = array(
     'title' => 'Configure',
     'page arguments' => array('system_theme_settings'),
-    'access arguments' => array('administer site configuration'),
+    'access arguments' => array('administer site appearance'),
     'type' => MENU_LOCAL_TASK,
     'file' => 'system.admin.inc',
   );
@@ -871,7 +879,7 @@
     'description' => 'Change basic site information, such as the site name, slogan, e-mail address, mission, front page and more.',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('system_site_information_settings'),
-    'access arguments' => array('administer site configuration'),
+    'access arguments' => array('administer site information'),
     'file' => 'system.admin.inc',
   );
 
@@ -1324,7 +1332,7 @@
  * Menu item access callback - only admin or enabled themes can be accessed.
  */
 function _system_themes_access($theme) {
-  return user_access('administer site configuration') && ($theme->status || $theme->name == variable_get('admin_theme', 0));
+  return user_access('administer site appearance') && ($theme->status || $theme->name == variable_get('admin_theme', 0));
 }
 
 /**
Index: modules/block/block.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.test,v
retrieving revision 1.26
diff -u -r1.26 block.test
--- modules/block/block.test	26 Aug 2009 10:53:45 -0000	1.26
+++ modules/block/block.test	26 Aug 2009 13:47:51 -0000
@@ -227,7 +227,7 @@
    * Test non-default theme admin.
    */
   function testNonDefaultBlockAdmin() {
-    $admin_user = $this->drupalCreateUser(array('administer blocks', 'administer site configuration'));
+    $admin_user = $this->drupalCreateUser(array('administer blocks', 'administer site configuration', 'administer site appearance'));
     $this->drupalLogin($admin_user);
     $this->drupalPost('admin/appearance', array('status[stark]' => 1), t('Save configuration'));
     $this->drupalGet('admin/structure/block/list/stark');
@@ -252,7 +252,7 @@
    */
   function testNewDefaultThemeBlocks() {
     // Create administrative user.
-    $admin_user = $this->drupalCreateUser(array('administer site configuration'));
+    $admin_user = $this->drupalCreateUser(array('administer site configuration', 'administer site appearance'));
     $this->drupalLogin($admin_user);
 
     // Ensure no other theme's blocks are in the block table yet.
@@ -286,7 +286,7 @@
   public static function getInfo() {
     return array(
       'name' => 'Admin theme block admin accessibility',
-      'description' => "Check whether the block administer page for a disabled theme acccessible if and only if it's the admin theme.",
+      'description' => "Check whether the block administer page for a disabled theme accessible if and only if it's the admin theme.",
       'group' => 'Block',
     );
   }
@@ -296,7 +296,7 @@
    */
   function testAdminTheme() {
     // Create administrative user.
-    $admin_user = $this->drupalCreateUser(array('administer blocks', 'administer site configuration'));
+    $admin_user = $this->drupalCreateUser(array('administer blocks', 'administer site configuration','administer site appearance'));
     $this->drupalLogin($admin_user);
 
     // Ensure that access to block admin page is denied when theme is disabled.
