diff --git a/admin_views.info b/admin_views.info
index c1a47af..97e9ef5 100644
--- a/admin_views.info
+++ b/admin_views.info
@@ -5,4 +5,5 @@ core = 7.x
 dependencies[] = views
 dependencies[] = views_bulk_operations
 files[] = plugins/views_plugin_display_system.inc
+files[] = plugins/views_plugin_access_menu.inc
 files[] = tests/admin_views.test
diff --git a/admin_views.module b/admin_views.module
index 53e726f..327514b 100644
--- a/admin_views.module
+++ b/admin_views.module
@@ -13,4 +13,3 @@ function admin_views_views_api() {
     'api' => 3,
   );
 }
-
diff --git a/admin_views.views.inc b/admin_views.views.inc
index 7ae3793..21b5608 100644
--- a/admin_views.views.inc
+++ b/admin_views.views.inc
@@ -27,6 +27,15 @@ function admin_views_views_plugins() {
         'admin' => t('System'),
       ),
     ),
+    'access' => array(
+      'menu' => array(
+        'title' => t('Menu'),
+        'help' => t('Access will be granted to users based on access associated with the overridden system path.'),
+        'handler' => 'views_plugin_access_menu',
+        'uses options' => FALSE,
+        'path' => "$path/plugins",
+      ),
+    ),
   );
 
   return $plugins;
diff --git a/plugins/views_plugin_access_menu.inc b/plugins/views_plugin_access_menu.inc
new file mode 100644
index 0000000..2ec6686
--- /dev/null
+++ b/plugins/views_plugin_access_menu.inc
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_plugin_access_menu.
+ */
+
+/**
+ * Access plugin that provides access control based on the system path being
+ * overridden.
+ *
+ * @ingroup views_access_plugins
+ */
+class views_plugin_access_menu extends views_plugin_access {}
diff --git a/plugins/views_plugin_display_system.inc b/plugins/views_plugin_display_system.inc
index 424649a..148ddd5 100644
--- a/plugins/views_plugin_display_system.inc
+++ b/plugins/views_plugin_display_system.inc
@@ -116,10 +116,12 @@ class views_plugin_display_system extends views_plugin_display {
       $access_plugin = views_get_plugin('access', 'none');
     }
 
+    $access_callback = NULL;
+
     // Get access callback might return an array of the callback + the dynamic arguments.
     $access_plugin_callback = $access_plugin->get_access_callback();
 
-    if (is_array($access_plugin_callback)) {
+    if (($access_plugin->plugin_name != 'menu') && is_array($access_plugin_callback)) {
       $access_arguments = array();
 
       // Find the plugin arguments.
@@ -141,6 +143,11 @@ class views_plugin_display_system extends views_plugin_display {
         }
       }
     }
+    // Overridde the access callback/arguments.
+    elseif ($access_plugin->plugin_name == 'menu') {
+      $access_callback = !empty($callbacks[$path]['access callback']) ? $callbacks[$path]['access callback'] : 'user_access';
+      $access_arguments = $callbacks[$path]['access arguments'];
+    }
     else {
       $access_arguments = array($access_plugin_callback);
     }
@@ -150,7 +157,7 @@ class views_plugin_display_system extends views_plugin_display {
       'page callback' => 'views_page',
       'page arguments' => $page_arguments,
       // Default access check (per display)
-      'access callback' => 'views_access',
+      'access callback' => !empty($access_callback) ? $access_callback : 'views_access',
       'access arguments' => $access_arguments,
       // Identify URL embedded arguments and correlate them to a handler
       'load arguments' => array($this->view->name, $this->display->id, '%index'),
