From 42632d3f53657238ca653b6f39d4226e9f0a1971 Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Mon, 29 Dec 2025 14:50:48 +0100 Subject: [PATCH] Drop root privileges on startup On rooted devices, switch to user 2000 during startup. Copy-paste does not work as root (user 0), so switching to 2000 fixes the issue. Fixes #6224 Suggested-by: Simon Chan <1330321+yume-chan@users.noreply.github.com> --- .../main/java/com/genymobile/scrcpy/Server.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/server/src/main/java/com/genymobile/scrcpy/Server.java b/server/src/main/java/com/genymobile/scrcpy/Server.java index 04e4a837..d6dc1e7d 100644 --- a/server/src/main/java/com/genymobile/scrcpy/Server.java +++ b/server/src/main/java/com/genymobile/scrcpy/Server.java @@ -27,6 +27,7 @@ import com.genymobile.scrcpy.video.VideoSource; import android.annotation.SuppressLint; import android.os.Build; import android.os.Looper; +import android.system.Os; import java.io.File; import java.io.IOException; @@ -233,6 +234,8 @@ public final class Server { } }); + dropRootPrivileges(); + prepareMainLooper(); Options options = Options.parse(args); @@ -273,4 +276,17 @@ public final class Server { // Do not print stack trace, a user-friendly error-message has already been logged } } + + @SuppressWarnings("deprecation") + private static void dropRootPrivileges() { + try { + if (Os.getuid() == 0) { + // Copy-paste does not work with root user + // + Os.setuid(2000); + } + } catch (Exception e) { + Ln.w("Cannot set UID", e); + } + } }