diff --git a/slock.c b/slock.c
index f87d03e..e47807b 100644
--- a/slock.c
+++ b/slock.c
@@ -80,7 +80,8 @@ getpw(void) { /* only run as root */
 #endif
 
 	/* drop privileges */
-	if(setgid(pw->pw_gid) < 0 || setuid(pw->pw_uid) < 0)
+	if (geteuid() == 0
+	   && ((getegid() != pw->pw_gid && setgid(pw->pw_gid) < 0) || setuid(pw->pw_uid) < 0))
 		die("slock: cannot drop privileges\n");
 	return rval;
 }
