diff --git a/core/modules/system/src/Permissions.php b/core/modules/system/src/Permissions.php
new file mode 100644
index 0000000000..9885920f93
--- /dev/null
+++ b/core/modules/system/src/Permissions.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace Drupal\system;
+
+use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
+use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Defines a class for dynamic permissions.
+ *
+ * @internal
+ */
+class Permissions implements ContainerInjectionInterface {
+
+  use StringTranslationTrait;
+
+  /**
+   * The module handler.
+   *
+   * @var \Drupal\Core\Extension\ModuleHandlerInterface
+   */
+  protected $moduleHandler;
+
+  /**
+   * Constructs a new Permissions object.
+   */
+  public function __construct(ModuleHandlerInterface $module_handler) {
+    $this->moduleHandler = $module_handler;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    return new static(
+      $container->get('module_handler')
+    );
+  }
+
+  /**
+   * Returns an array of content permissions.
+   *
+   * If the 'node' module is enabled this method will provide the
+   * 'access content' permission.
+   *
+   * @return array
+   *   The transition permissions.
+   */
+  public function contentPermissions() {
+    $permissions = [];
+    if (!$this->moduleHandler->moduleExists('node')) {
+      $permissions['access content'] = [
+        'title' => $this->t('View published content'),
+      ];
+    }
+    return $permissions;
+  }
+
+}
diff --git a/core/modules/system/system.permissions.yml b/core/modules/system/system.permissions.yml
index 726c295ffa..d893b1697e 100644
--- a/core/modules/system/system.permissions.yml
+++ b/core/modules/system/system.permissions.yml
@@ -24,3 +24,5 @@ link to any page:
   description: 'This allows to bypass access checking when linking to internal paths.'
 administer menu:
   title: 'Administer menus and menu items'
+permission_callbacks:
+  - \Drupal\content_moderation\Permissions::transitionPermissions
