Только суперпользователь может изменить uid, когда захочет, просто добавить пользователя в корневую группу недостаточно.
setuid(2)
например, упоминает:
The setuid() system call is permitted if the specified ID is equal to the
real user ID or the effective user ID of the process, or if the effective
user ID is that of the super user.
В Linux также есть:
Under Linux, setuid() is implemented like the POSIX version with the
_POSIX_SAVED_IDS feature. This allows a set-user-ID (other than root)
program to drop all of its user privileges, do some un-privileged work, and
then reengage the original effective user ID in a secure manner.
Я даже не знаю, реализует ли это Python напрямую, но в любом случае это не совсем то, что вам нужно.
Итак, краткий ответ: Запустите начальный процесс от имени пользователя root.
Если вы беспокоитесь о безопасности, запустите два процесса, один с правами root, другой как непривилегированный пользователь, и пусть непривилегированный процесс связывается с корневым процессом с помощью сокета. Это более продвинутая настройка, хотя ...