diff --git modules/aggregator/aggregator.info modules/aggregator/aggregator.info
index 351e294..afae530 100644
--- modules/aggregator/aggregator.info
+++ modules/aggregator/aggregator.info
@@ -1,6 +1,7 @@
 ; $Id: aggregator.info,v 1.12 2009-06-08 09:23:50 dries Exp $
 name = Aggregator
 description = "Aggregates syndicated content (RSS, RDF, and Atom feeds)."
+settings_path = admin/config/services/aggregator
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/block/block.info modules/block/block.info
index ea3abf8..b70a657 100644
--- modules/block/block.info
+++ modules/block/block.info
@@ -2,6 +2,7 @@
 
 name = Block
 description = Controls the visual building blocks a page is constructed with. Blocks are boxes of content rendered into an area, or region, of a web page.
+settings_path = admin/structure/block
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/book/book.info modules/book/book.info
index a6f4b76..5107b7f 100644
--- modules/book/book.info
+++ modules/book/book.info
@@ -2,6 +2,7 @@
 
 name = Book
 description = Allows users to create and organize related content in an outline.
+settings_path = admin/content/book/settings
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/comment/comment.info modules/comment/comment.info
index 278980a..c3512f7 100644
--- modules/comment/comment.info
+++ modules/comment/comment.info
@@ -2,6 +2,7 @@
 
 name = Comment
 description = Allows users to comment on and discuss published content.
+settings_path = admin/content/comment
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/contact/contact.info modules/contact/contact.info
index 3686e7d..c8b3a48 100644
--- modules/contact/contact.info
+++ modules/contact/contact.info
@@ -1,6 +1,7 @@
 ; $Id: contact.info,v 1.9 2009-06-08 09:23:51 dries Exp $
 name = Contact
 description = Enables the use of both personal and site-wide contact forms.
+settings_path = admin/structure/contact
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/dashboard/dashboard.info modules/dashboard/dashboard.info
index 6f3bb26..a7c7bcf 100644
--- modules/dashboard/dashboard.info
+++ modules/dashboard/dashboard.info
@@ -1,6 +1,7 @@
 ; $Id: dashboard.info,v 1.1 2009-10-13 13:54:54 dries Exp $
 name = Dashboard
 description = A module that provides a dashboard interface for organizing and tracking various information within your site.
+settings_path = admin/dashboard/customize
 core = 7.x
 package = Core
 version = VERSION
diff --git modules/field_ui/field_ui.info modules/field_ui/field_ui.info
index a0896c8..35416ab 100644
--- modules/field_ui/field_ui.info
+++ modules/field_ui/field_ui.info
@@ -1,6 +1,7 @@
 ; $Id: field_ui.info,v 1.1 2009-08-19 13:31:13 webchick Exp $
 name = Field UI
 description = User Interface for the Field API.
+settings_path = admin/reports/fields
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/filter/filter.info modules/filter/filter.info
index 0636664..540bf08 100644
--- modules/filter/filter.info
+++ modules/filter/filter.info
@@ -1,6 +1,7 @@
 ;h $Id: filter.info,v 1.12 2009-06-08 09:23:52 dries Exp $
 name = Filter
 description = Filters content in preparation for display.
+settings_path = admin/config/content/formats
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/forum/forum.info modules/forum/forum.info
index f215745..8651478 100644
--- modules/forum/forum.info
+++ modules/forum/forum.info
@@ -1,6 +1,7 @@
 ; $Id: forum.info,v 1.12 2009-06-08 09:23:52 dries Exp $
 name = Forum
 description = Provides discussion forums.
+settings_path = admin/structure/forum/settings
 dependencies[] = taxonomy
 dependencies[] = comment
 package = Core
diff --git modules/image/image.info modules/image/image.info
index 1aa729b..63d2448 100644
--- modules/image/image.info
+++ modules/image/image.info
@@ -1,6 +1,7 @@
 ; $Id: image.info,v 1.3 2009-10-12 05:22:57 webchick Exp $
 name = Image
 description = Provides image manipulation tools.
+settings_path = admin/config/media/image-styles
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/locale/locale.info modules/locale/locale.info
index 6b1f975..cc4e823 100644
--- modules/locale/locale.info
+++ modules/locale/locale.info
@@ -1,6 +1,7 @@
 ; $Id: locale.info,v 1.12 2009-10-16 02:04:42 webchick Exp $
 name = Locale
 description = Adds language handling functionality and enables the translation of the user interface to languages other than English.
+settings_path = admin/config/regional/language
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/menu/menu.info modules/menu/menu.info
index 806facb..eead692 100644
--- modules/menu/menu.info
+++ modules/menu/menu.info
@@ -1,6 +1,7 @@
 ; $Id: menu.info,v 1.9 2009-06-08 09:23:52 dries Exp $
 name = Menu
 description = Allows administrators to customize the site navigation menu.
+settings_path = admin/structure/menu/settings
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/node/node.info modules/node/node.info
index 6a690d2..c64f888 100644
--- modules/node/node.info
+++ modules/node/node.info
@@ -1,6 +1,7 @@
 ; $Id: node.info,v 1.12 2009-08-19 20:19:36 dries Exp $
 name = Node
 description = Allows content to be submitted to the site and displayed on pages.
+settings_path = admin/structure/types
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/path/path.info modules/path/path.info
index 4503734..0028624 100644
--- modules/path/path.info
+++ modules/path/path.info
@@ -1,6 +1,7 @@
 ; $Id: path.info,v 1.8 2009-06-08 09:23:53 dries Exp $
 name = Path
 description = Allows users to rename URLs.
+settings_path = admin/config/search/path
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/profile/profile.info modules/profile/profile.info
index 634b33b..3e65ef2 100644
--- modules/profile/profile.info
+++ modules/profile/profile.info
@@ -1,6 +1,7 @@
 ; $Id: profile.info,v 1.9 2009-06-08 09:23:53 dries Exp $
 name = Profile
 description = Supports configurable user profiles.
+settings_path = admin/config/people/profile
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/search/search.info modules/search/search.info
index 4e2ae59..5a593b0 100644
--- modules/search/search.info
+++ modules/search/search.info
@@ -1,6 +1,7 @@
 ; $Id: search.info,v 1.10 2009-08-29 10:46:41 dries Exp $
 name = Search
 description = Enables site-wide keyword searching.
+settings_path = admin/config/search/settings
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/shortcut/shortcut.info modules/shortcut/shortcut.info
index 2176bdc..e5e053e 100644
--- modules/shortcut/shortcut.info
+++ modules/shortcut/shortcut.info
@@ -1,6 +1,7 @@
 ; $Id: shortcut.info,v 1.1 2009-10-17 00:51:52 dries Exp $
 name = Shortcut
 description = Allows users to manage customizable lists of shortcut links.
+settings_path = admin/config/system/shortcut
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/simpletest/simpletest.info modules/simpletest/simpletest.info
index bf55aca..76507d1 100644
--- modules/simpletest/simpletest.info
+++ modules/simpletest/simpletest.info
@@ -1,6 +1,7 @@
 ; $Id: simpletest.info,v 1.13 2009-10-18 05:14:39 webchick Exp $
 name = Testing
 description = Provides a framework for unit and functional testing.
+settings_path = admin/config/development/testing/settings
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/system/system.admin.inc modules/system/system.admin.inc
index 3d722f2..34a9c1e 100644
--- modules/system/system.admin.inc
+++ modules/system/system.admin.inc
@@ -697,8 +697,8 @@ function system_modules($form, $form_state = array()) {
   $form['modules'] = array('#tree' => TRUE);
 
   // Used when checking if module implements a help page.
-  $help_arg = module_exists('help') ? drupal_help_arg() : FALSE;
-
+  $help_enabled = module_exists('help');
+  $admin_permissions = user_access('administer permissions');
   // Iterate through each of the modules.
   foreach ($files as $filename => $module) {
     $extra = array();
@@ -726,13 +726,8 @@ function system_modules($form, $form_state = array()) {
         }
       }
     }
-    // Generate link for module's help page, if there is one.
-    if ($help_arg && $module->status && in_array($filename, module_implements('help'))) {
-      if (module_invoke($filename, 'help', "admin/help#$filename", $help_arg)) {
-        // Module has a help page.
-        $extra['help'] = theme('more_help_link', array('url' => url("admin/help/$filename")));
-      }
-    }
+    // Get links to permissions, settings, and help.
+    $extra['links'] = _system_modules_operations_links($module, $admin_permissions, $help_enabled);
     // Mark dependents disabled so the user cannot remove required modules.
     $dependents = array();
     // If this module is required by other modules, list those, and then make it
@@ -763,6 +758,7 @@ function system_modules($form, $form_state = array()) {
         t('Name'),
         t('Version'),
         t('Description'),
+        array('data' => t('Operations'), 'colspan' => 3),
       ),
     );
   }
@@ -777,6 +773,51 @@ function system_modules($form, $form_state = array()) {
 }
 
 /**
+ * Build set of links for the Operations column on the modules page.
+ */
+function _system_modules_operations_links($module, $admin_permissions, $help_enabled) {
+  $links = array('settings' => '', 'permissions' => '', 'help' => '');
+  if (!$module->status) {
+    // Non-enabled modules have no links.
+    return $links;
+  }
+  $tasks = array();
+  if (!empty($module->info['settings_path'])) {
+    // We always display the link even if it's a 403 so the user knows to
+    // configure permissions.
+    $tasks['settings'] = array(
+      'title' => t('Configure settings'),
+      'path' => $module->info['settings_path'],
+      'options' => array('attributes' => array('class' => 'module-settings-link'), 'html' => TRUE),
+    );
+  }
+  if ($admin_permissions && in_array($module->name, module_implements('permission'))) {
+    $tasks['permissions'] = array(
+      'title' => t('Configure permissions'),
+      'path' => 'admin/config/people/permissions',
+      'options' => array('fragment' => 'module-' . $module->name, 'attributes' => array('class' => 'module-permissions-link')),
+    );
+  }
+  // Generate link for module's help page, if there is one.
+  if ($help_enabled && in_array($module->name, module_implements('help'))) {
+    if (module_invoke($module->name, 'help', "admin/help#" . $module->name, drupal_help_arg())) {
+      // Module has a help page.
+      $tasks['help'] = array(
+        'title' => t('More help'),
+        'path' => 'admin/help/' . $module->name,
+        'options' => array('attributes' => array('class' => 'module-help-link')),
+      );
+    }
+  }
+  foreach ($tasks as $key => $task) {
+    $task['options']['html'] = TRUE;
+    $task['options']['attributes']['title'] = $task['title'];
+    $links[$key] = l('<span class="element-invisible">' . $task['title'] . '</span>', $task['path'], $task['options']);
+  }
+  return $links;
+}
+
+/**
  * Array sorting callback; sorts modules or themes by their name.
  */
 function system_sort_modules_by_info_name($a, $b) {
@@ -793,7 +834,7 @@ function _system_modules_build_row($info, $extra) {
     'required_by' => array(),
     'disabled' => FALSE,
     'enabled' => FALSE,
-    'help' => '',
+    'links' => array('', '', ''),
   );
   $form = array(
     '#tree' => TRUE,
@@ -852,12 +893,9 @@ function _system_modules_build_row($info, $extra) {
     $form['description']['#markup'] .= theme('system_modules_incompatible', array('message' => $status_long));
   }
 
-  // Show a "more help" link for modules that have them.
-  if ($extra['help']) {
-    $form['help'] = array(
-      '#markup' => $extra['help'],
-    );
-  }
+  // Show a set of useful links for modules that have them.
+  $form['#links'] = $extra['links'];
+
   return $form;
 }
 
@@ -2318,14 +2356,8 @@ function theme_system_modules_fieldset($variables) {
     }
     $row[] = $label . '><strong>' . drupal_render($module['name']) . '</strong></label>';
     $row[] = drupal_render($module['version']);
-    $description = '';
-    // If we have help, it becomes the first part
-    // of the description - with CSS, it is float: right'd.
-    if (isset($module['help'])) {
-      $description = '<div class="module-help">' . drupal_render($module['help']) . '</div>';
-    }
     // Add the description, along with any modules it requires.
-    $description .= drupal_render($module['description']);
+    $description = drupal_render($module['description']);
     if ($module['#requires']) {
       $description .= '<div class="admin-requirements">' . t('Requires: !module-list', array('!module-list' => implode(', ', $module['#requires']))) . '</div>';
     }
@@ -2333,6 +2365,10 @@ function theme_system_modules_fieldset($variables) {
       $description .= '<div class="admin-requirements">' . t('Required by: !module-list', array('!module-list' => implode(', ', $module['#required_by']))) . '</div>';
     }
     $row[] = array('data' => $description, 'class' => array('description'));
+    // Display links (such as help or permissions) in its own column.
+    foreach ($module['#links'] as $link) {
+      $row[] = array('data' => $link, 'class' => array('operations'));
+    }
     $rows[] = $row;
   }
 
diff --git modules/system/system.css modules/system/system.css
index 6d1281a..6cb360e 100644
--- modules/system/system.css
+++ modules/system/system.css
@@ -163,6 +163,20 @@ tr.merge-up, tr.merge-up td, tr.merge-up th {
   padding: 1px 0 1px 20px; /* LTR */
   background: url(../../misc/help.png) 0 50% no-repeat; /* LTR */
 }
+.operations a.module-help-link, .operations a.module-permissions-link, .operations a.module-settings-link {
+  padding: 1px 0 1px 20px; /* LTR */
+  display: block;
+  height: 16px;
+}
+.operations a.module-help-link {
+  background: url(../../misc/help.png) 0 50% no-repeat; /* LTR */
+}
+.operations a.module-permissions-link {
+  background: url(../../misc/permissions.png) 0 50% no-repeat; /* LTR */
+}
+.operations a.module-settings-link {
+  background: url(../../misc/settings.png) 0 50% no-repeat; /* LTR */
+}
 .more-link {
   text-align: right; /* LTR */
 }
diff --git modules/system/system.module modules/system/system.module
index 41f5808..bcedf31 100644
--- modules/system/system.module
+++ modules/system/system.module
@@ -2078,6 +2078,7 @@ function _system_rebuild_module_data() {
     'php' => DRUPAL_MINIMUM_PHP,
     'files' => array(),
     'bootstrap' => 0,
+    'settings_path' => '',
   );
 
   // Read info files for each module.
diff --git modules/taxonomy/taxonomy.info modules/taxonomy/taxonomy.info
index 41c857f..f97b6aa 100644
--- modules/taxonomy/taxonomy.info
+++ modules/taxonomy/taxonomy.info
@@ -1,6 +1,7 @@
 ; $Id: taxonomy.info,v 1.10 2009-08-19 20:19:37 dries Exp $
 name = Taxonomy
 description = Enables the categorization of content.
+settings_path = admin/structure/taxonomy
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/trigger/trigger.info modules/trigger/trigger.info
index 6d0ee53..0e1a9da 100644
--- modules/trigger/trigger.info
+++ modules/trigger/trigger.info
@@ -1,6 +1,7 @@
 ; $Id: trigger.info,v 1.6 2009-06-08 09:23:54 dries Exp $
 name = Trigger
 description = Enables actions to be fired on certain system events, such as when new content is created.
+settings_path = admin/structure/trigger
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/update/update.info modules/update/update.info
index a034139..6fcea25 100644
--- modules/update/update.info
+++ modules/update/update.info
@@ -1,6 +1,7 @@
 ; $Id: update.info,v 1.8 2009-10-16 21:02:23 dries Exp $
 name = Update manager
 description = Checks for available updates, and can securely install or update modules and themes via a web interface.
+settings_path = admin/reports/updates/settings
 version = VERSION
 package = Core
 core = 7.x
diff --git modules/upload/upload.info modules/upload/upload.info
index 0f3d6a5..91c2297 100644
--- modules/upload/upload.info
+++ modules/upload/upload.info
@@ -1,6 +1,7 @@
 ; $Id: upload.info,v 1.10 2009-08-19 20:19:37 dries Exp $
 name = Upload
 description = Allows users to upload and attach files to content.
+settings_path = admin/config/media/uploads
 package = Core
 version = VERSION
 core = 7.x
diff --git modules/user/user.info modules/user/user.info
index 54e288e..ca48705 100644
--- modules/user/user.info
+++ modules/user/user.info
@@ -1,6 +1,7 @@
 ; $Id: user.info,v 1.12 2009-08-19 20:19:37 dries Exp $
 name = User
 description = Manages the user registration and login system.
+settings_path = admin/config/people/accounts
 package = Core
 version = VERSION
 core = 7.x
