diff --git a/django/contrib/auth/models.py b/django/contrib/auth/models.py
index 8fcbdef..97d9c99 100644
--- a/django/contrib/auth/models.py
+++ b/django/contrib/auth/models.py
@@ -329,8 +329,13 @@ class User(models.Model):
         If object is passed, it checks if the user has all required perms
         for this object.
         """
+        
+        # Active superusers have all permissions.
+        if self.is_active and self.is_superuser:
+            return True
+        
         for perm in perm_list:
-            if not self.has_perm(perm, obj):
+            if not _user_has_perm(self, perm, obj):
                 return False
         return True
 
