diff --git a/lib/chef/provider/user/solaris.rb b/lib/chef/provider/user/solaris.rb
index <HASH>..<HASH> 100644
--- a/lib/chef/provider/user/solaris.rb
+++ b/lib/chef/provider/user/solaris.rb
@@ -73,6 +73,19 @@ class Chef
 
         private
 
+        # Override the version from {#Useradd} because Solaris doesn't support
+        # system users and therefore has no `-r` option.
+        #
+        # @since 12.15
+        # @api private
+        # @see Useradd#useradd_options
+        # @return [Array<String>]
+        def useradd_options
+          opts = []
+          opts << "-M" unless managing_home_dir?
+          opts
+        end
+
         def manage_password
           if @current_resource.password != @new_resource.password && @new_resource.password
             Chef::Log.debug("#{@new_resource} setting password to #{@new_resource.password}")
diff --git a/lib/chef/provider/user/useradd.rb b/lib/chef/provider/user/useradd.rb
index <HASH>..<HASH> 100644
--- a/lib/chef/provider/user/useradd.rb
+++ b/lib/chef/provider/user/useradd.rb
@@ -140,8 +140,7 @@ class Chef
 
         def useradd_options
           opts = []
-          # Solaris doesn't support system users.
-          opts << "-r" if new_resource.system && !node.platform?("solaris2")
+          opts << "-r" if new_resource.system
           opts << "-M" unless managing_home_dir?
           opts
         end
Fully override the method because we are planning to phase out the shared base class anyway so the slight code duplication is fine.