diff --git a/core/modules/user/src/AccountSettingsForm.php b/core/modules/user/src/AccountSettingsForm.php
index 0ef0920cbf..1334e0e2c0 100644
--- a/core/modules/user/src/AccountSettingsForm.php
+++ b/core/modules/user/src/AccountSettingsForm.php
@@ -101,34 +101,6 @@ public function buildForm(array $form, FormStateInterface $form_state) {
       '#required' => TRUE,
     ];
 
-    // Administrative role option.
-    $form['admin_role'] = [
-      '#type' => 'details',
-      '#title' => $this->t('Administrator role'),
-      '#open' => TRUE,
-    ];
-    // Do not allow users to set the anonymous or authenticated user roles as the
-    // administrator role.
-    $roles = user_role_names(TRUE);
-    unset($roles[RoleInterface::AUTHENTICATED_ID]);
-
-    $admin_roles = $this->roleStorage->getQuery()
-      ->condition('is_admin', TRUE)
-      ->execute();
-    $default_value = reset($admin_roles);
-
-    $form['admin_role']['user_admin_role'] = [
-      '#type' => 'select',
-      '#title' => $this->t('Administrator role'),
-      '#empty_value' => '',
-      '#default_value' => $default_value,
-      '#options' => $roles,
-      '#description' => $this->t('This role will be automatically assigned new permissions whenever a module is enabled. Changing this setting will not affect existing permissions.'),
-      // Don't allow to select a single admin role in case multiple roles got
-      // marked as admin role already.
-      '#access' => count($admin_roles) <= 1,
-    ];
-
     // @todo Remove this check once language settings are generalized.
     if ($this->moduleHandler->moduleExists('content_translation')) {
       $form['language'] = [
@@ -461,22 +433,6 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
     $this->config('system.site')
       ->set('mail_notification', $form_state->getValue('mail_notification_address'))
       ->save();
-
-    // Change the admin role.
-    if ($form_state->hasValue('user_admin_role')) {
-      $admin_roles = $this->roleStorage->getQuery()
-        ->condition('is_admin', TRUE)
-        ->execute();
-
-      foreach ($admin_roles as $rid) {
-        $this->roleStorage->load($rid)->setIsAdmin(FALSE)->save();
-      }
-
-      $new_admin_role = $form_state->getValue('user_admin_role');
-      if ($new_admin_role) {
-        $this->roleStorage->load($new_admin_role)->setIsAdmin(TRUE)->save();
-      }
-    }
   }
 
 }
diff --git a/core/modules/user/src/AdministratorRoleSettingsForm.php b/core/modules/user/src/AdministratorRoleSettingsForm.php
new file mode 100644
index 0000000000..904a78df22
--- /dev/null
+++ b/core/modules/user/src/AdministratorRoleSettingsForm.php
@@ -0,0 +1,117 @@
+<?php
+
+namespace Drupal\user;
+
+use Drupal\Core\Form\ConfigFormBase;
+use Drupal\Core\Config\ConfigFactoryInterface;
+use Drupal\Core\Form\FormStateInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Configure administrator role settings for this site.
+ */
+class AdministratorRoleSettingsForm extends ConfigFormBase {
+
+  /**
+   * The role storage used when changing the admin role.
+   *
+   * @var \Drupal\user\RoleStorageInterface
+   */
+  protected $roleStorage;
+
+  /**
+   * Constructs a \Drupal\user\AdministratorRoleSettingsForm object.
+   *
+   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
+   *   The factory for configuration objects.
+   * @param \Drupal\user\RoleStorageInterface $role_storage
+   *   The role storage.
+   */
+  public function __construct(ConfigFactoryInterface $config_factory, RoleStorageInterface $role_storage) {
+    parent::__construct($config_factory);
+    $this->roleStorage = $role_storage;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    return new static(
+      $container->get('config.factory'),
+      $container->get('entity.manager')->getStorage('user_role')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return 'administrator_role_settings';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function getEditableConfigNames() {
+    return [
+      'system.site',
+      'user.mail',
+      'user.settings',
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, FormStateInterface $form_state) {
+    $form = parent::buildForm($form, $form_state);
+
+    // Administrative role option.
+    $form['admin_role'] = [
+      '#type' => 'details',
+      '#title' => $this->t('Administrator role'),
+      '#open' => TRUE,
+    ];
+    // Do not allow users to set the anonymous or authenticated user roles as
+    // the administrator role.
+    $roles = user_role_names(TRUE);
+    unset($roles[RoleInterface::AUTHENTICATED_ID]);
+    $admin_roles = $this->roleStorage->getQuery()
+      ->condition('is_admin', TRUE)
+      ->execute();
+    $default_value = reset($admin_roles);
+    $form['admin_role']['user_admin_role'] = [
+      '#type' => 'select',
+      '#title' => $this->t('Administrator role'),
+      '#empty_value' => '',
+      '#default_value' => $default_value,
+      '#options' => $roles,
+      '#description' => $this->t('This role will be automatically assigned new permissions whenever a module is enabled. Changing this setting will not affect existing permissions.'),
+      // Don't allow to select a single admin role in case multiple roles got
+      // marked as admin role already.
+      '#access' => count($admin_roles) <= 1,
+    ];
+
+    return parent::buildForm($form, $form_state);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    if ($form_state->hasValue('user_admin_role')) {
+      $admin_roles = $this->roleStorage->getQuery()
+        ->condition('is_admin', TRUE)
+        ->execute();
+      foreach ($admin_roles as $rid) {
+        $this->roleStorage->load($rid)->setIsAdmin(FALSE)->save();
+      }
+      $new_admin_role = $form_state->getValue('user_admin_role');
+      if ($new_admin_role) {
+        $this->roleStorage->load($new_admin_role)->setIsAdmin(TRUE)->save();
+      }
+    }
+    parent::submitForm($form, $form_state);
+  }
+
+}
diff --git a/core/modules/user/tests/src/Unit/Menu/UserLocalTasksTest.php b/core/modules/user/tests/src/Unit/Menu/UserLocalTasksTest.php
index ebd7e33c88..250a3dbff9 100644
--- a/core/modules/user/tests/src/Unit/Menu/UserLocalTasksTest.php
+++ b/core/modules/user/tests/src/Unit/Menu/UserLocalTasksTest.php
@@ -30,9 +30,9 @@ public function testUserAdminLocalTasks($route, $expected) {
    */
   public function getUserAdminRoutes() {
     return [
-      ['entity.user.collection', [['entity.user.collection', 'user.admin_permissions', 'entity.user_role.collection']]],
-      ['user.admin_permissions', [['entity.user.collection', 'user.admin_permissions', 'entity.user_role.collection']]],
-      ['entity.user_role.collection', [['entity.user.collection', 'user.admin_permissions', 'entity.user_role.collection']]],
+      ['entity.user.collection', [['entity.user.collection', 'user.admin_permissions', 'entity.user_role.collection', 'entity.user.administrator_role']]],
+      ['user.admin_permissions', [['entity.user.collection', 'user.admin_permissions', 'entity.user_role.collection', 'entity.user.administrator_role']]],
+      ['entity.user_role.collection', [['entity.user.collection', 'user.admin_permissions', 'entity.user_role.collection', 'entity.user.administrator_role']]],
       ['entity.user.admin_form', [['user.account_settings_tab']]],
     ];
   }
diff --git a/core/modules/user/user.links.task.yml b/core/modules/user/user.links.task.yml
index 5b0d1648f4..2c3900c3e7 100644
--- a/core/modules/user/user.links.task.yml
+++ b/core/modules/user/user.links.task.yml
@@ -49,3 +49,9 @@ entity.user_role.collection:
   route_name: entity.user_role.collection
   base_route: entity.user.collection
   weight: 10
+
+entity.user.administrator_role:
+  title: 'Administrator Role settings'
+  route_name: entity.user.administrator_role
+  base_route: entity.user.collection
+  weight: 11
diff --git a/core/modules/user/user.routing.yml b/core/modules/user/user.routing.yml
index dc618eed8a..4b0b4c317e 100644
--- a/core/modules/user/user.routing.yml
+++ b/core/modules/user/user.routing.yml
@@ -29,6 +29,14 @@ entity.user.admin_form:
   requirements:
     _permission: 'administer account settings'
 
+entity.user.administrator_role:
+  path: '/admin/people/permissions/roles'
+  defaults:
+    _form: '\Drupal\user\AdministratorRoleSettingsForm'
+    _title: 'Administrator Role settings'
+  requirements:
+    _permission: 'administer account settings'
+
 entity.user.collection:
   path: '/admin/people'
   defaults:
