diff --git a/protected_pages.install b/protected_pages.install
index 48e7892..95daaab 100644
--- a/protected_pages.install
+++ b/protected_pages.install
@@ -6,6 +6,7 @@
  */
 
 use Drupal\Core\Url;
+use Drupal\user\Entity\Role;
 
 /**
  * Implements hook_schema().
@@ -52,3 +53,20 @@ function protected_pages_install() {
         ->toString(),
     ]), 'status');
 }
+
+/**
+ * Update permissions.
+ */
+function protected_pages_update_8100() {
+  if ($roles = Role::loadMultiple()) {
+    foreach ($roles as $role) {
+      if ($role->hasPermission('administer protected pages configuration')) {
+        $role->grantPermission('administer protected pages content');
+        $role->grantPermission('send protected pages emails');
+        $role->grantPermission('administer protected pages settings');
+        $role->revokePermission('administer protected pages configuration');
+        $role->save();
+      }
+    }
+  }
+}
diff --git a/protected_pages.permissions.yml b/protected_pages.permissions.yml
index 3c2fe38..6da808d 100644
--- a/protected_pages.permissions.yml
+++ b/protected_pages.permissions.yml
@@ -6,6 +6,14 @@
   title: Access protected page password screen
   description: This permission provides access to protected page login screen.
 
-'administer protected pages configuration':
-  title: Access protected pages configuration screen
+'administer protected pages content':
+  title: Administer protected pages content.
+  restrict access: TRUE
+
+'send protected pages emails':
+  title: Send protected pages emails.
+  restrict access: TRUE
+
+'administer protected pages settings':
+  title: Administer protected pages settings.
   restrict access: TRUE
diff --git a/protected_pages.routing.yml b/protected_pages.routing.yml
index ce54ea8..eabb500 100644
--- a/protected_pages.routing.yml
+++ b/protected_pages.routing.yml
@@ -4,7 +4,7 @@ protected_pages_list:
     _title: 'Protected Pages'
     _controller: '\Drupal\protected_pages\Controller\ProtectedPagesController::protectedPagesList'
   requirements:
-    _permission: 'administer protected pages configuration'
+    _permission: 'administer protected pages content'
 
 protected_pages_add:
   path: 'admin/config/system/protected_pages/add'
@@ -12,7 +12,7 @@ protected_pages_add:
     _title: 'Add Protected Page'
     _form: '\Drupal\protected_pages\Form\ProtectedPagesAddForm'
   requirements:
-    _permission: 'administer protected pages configuration'
+    _permission: 'administer protected pages content'
 
 protected_pages_edit:
   path: 'admin/config/system/protected_pages/{pid}/edit'
@@ -20,7 +20,7 @@ protected_pages_edit:
     _title: 'Edit Protected Page'
     _form: '\Drupal\protected_pages\Form\ProtectedPagesEditForm'
   requirements:
-    _permission: 'administer protected pages configuration'
+    _permission: 'administer protected pages content'
 
 protected_pages_delete:
   path: 'admin/config/system/protected_pages/{pid}/delete'
@@ -28,7 +28,7 @@ protected_pages_delete:
     _title: 'Delete Protected Page'
     _form: '\Drupal\protected_pages\Form\ProtectedPagesDeleteConfirmForm'
   requirements:
-    _permission: 'administer protected pages configuration'
+    _permission: 'administer protected pages content'
 
 protected_pages_send_email:
   path: 'admin/config/system/protected_pages/{pid}/send_email'
@@ -36,7 +36,7 @@ protected_pages_send_email:
     _title: 'Send protected pages details to user by email'
     _form: '\Drupal\protected_pages\Form\ProtectedPagesSendEmailForm'
   requirements:
-    _permission: 'administer protected pages configuration'
+    _permission: 'send protected pages emails'
 
 protected_pages_settings:
   path: 'admin/config/system/protected_pages/settings'
@@ -44,7 +44,7 @@ protected_pages_settings:
     _title: 'Settings'
     _form: '\Drupal\protected_pages\Form\ProtectedPagesSettingForm'
   requirements:
-    _permission: 'administer protected pages configuration'
+    _permission: 'administer protected pages settings'
 
 protected_pages_login_page:
   path: 'protected-page'
diff --git a/src/Controller/ProtectedPagesController.php b/src/Controller/ProtectedPagesController.php
index 17c33c0..2cdb0a9 100644
--- a/src/Controller/ProtectedPagesController.php
+++ b/src/Controller/ProtectedPagesController.php
@@ -83,14 +83,17 @@ class ProtectedPagesController extends ControllerBase {
               'title' => $this->t('Delete'),
               'url' => Url::fromUri('internal:/admin/config/system/protected_pages/' . $page->pid . '/delete'),
             ],
-            'send-email' => [
-              'title' => $this->t('Send E-mail'),
-              'url' => Url::fromUri('internal:/admin/config/system/protected_pages/' . $page->pid . '/send_email'),
-            ],
           ],
         ],
       ];
 
+      if (\Drupal::currentUser()->hasPermission('send protected pages emails')) {
+        $operation_drop_button[0]['#links']['send-email'] = [
+          'title' => $this->t('Send E-mail'),
+          'url' => Url::fromUri('internal:/admin/config/system/protected_pages/' . $page->pid . '/send_email'),
+        ];
+      }
+
       $operations = $this->renderer->render($operation_drop_button);
       $rows[] = [
         'data' =>
diff --git a/tests/src/Functional/ProtectedPagesAccess.php b/tests/src/Functional/ProtectedPagesAccess.php
index 23a6795..a7113bf 100644
--- a/tests/src/Functional/ProtectedPagesAccess.php
+++ b/tests/src/Functional/ProtectedPagesAccess.php
@@ -96,7 +96,7 @@ class ProtectedPagesAccess extends BrowserTestBase {
   public function testProtectedPageConfigurationAccess() {
     // Create a user w/ permission
     // to 'administer protected pages configuration'.
-    $adminUser = $this->drupalCreateUser(['administer protected pages configuration']);
+    $adminUser = $this->drupalCreateUser(['administer protected pages content', 'send protected pages emails', 'administer protected pages settings']);
 
     // Create a user w/ permission
     // to 'access protected page password screen'.
@@ -111,6 +111,8 @@ class ProtectedPagesAccess extends BrowserTestBase {
     $this->drupalLogin($adminUser);
     $this->drupalGet('admin/config/system/protected_pages');
     $this->assertSession()->statusCodeEquals(200);
+    $this->drupalGet('admin/config/system/protected_pages/settings');
+    $this->assertSession()->statusCodeEquals(200);
     $this->drupalLogout($adminUser);
   }
 
