diff --git a/criu/uts_ns.c b/criu/uts_ns.c
index 1ea075c..064301b 100644
--- a/criu/uts_ns.c
+++ b/criu/uts_ns.c
@@ -8,6 +8,7 @@
 #include "namespaces.h"
 #include "sysctl.h"
 #include "uts_ns.h"
+#include "cr_options.h"
 
 #include "protobuf.h"
 #include "images/utsns.pb-c.h"
@@ -62,6 +63,11 @@ int prepare_utsns(int pid)
 	req[1].type = CTL_STR(strlen(ue->domainname));
 
 	ret = sysctl_op(req, ARRAY_SIZE(req), CTL_WRITE, CLONE_NEWUTS);
+	if (ret && opts.unprivileged) {
+		pr_warn("Unable to restore UTS sysctls in unprivileged mode; keeping destination UTS values\n");
+		ret = 0;
+	}
+
 	utsns_entry__free_unpacked(ue, NULL);
 out:
 	close_image(img);
