Busybox Su Must Be Suid To Work Properly ๐ซ
apt-get install util-linux # Debian/Ubuntu apk add util-linux # Alpine That su binary will have its own SUID bit set correctly by the package manager. In embedded systems, itโs often simpler to avoid su entirely. Grant access via sudo (which also needs SUID) or a lightweight alternative like doas . A Note on Android and Custom ROMs This error appears frequently on rooted Android devices when using a terminal emulator. Androidโs su is often a custom daemon ( su to daemonsu ), but if BusyBox is installed, its su may conflict.
Use a dedicated su binary, even a minimal one. Method 3: Install a full-featured su On most full Linux systems, youโd install util-linux which provides a proper su :
Ensure the correct su is first in your PATH . Typically: busybox su must be suid to work properly
Because itโs a single binary, BusyBox must emulate each commandโs behavior internally. This includes su โ the "switch user" command. In Linux, every file has permission bits. One special bit is the SUID (Set User ID) bit. When set on an executable file, it causes the program to run with the file ownerโs permissions, not the permissions of the user who launched it.
This message appears when trying to switch users (typically to root) using the su command provided by BusyBox. Understanding it requires a brief look into Linux file permissions and process ownership. BusyBox is a software suite that combines many common Unix utilities (like ls , cp , sh , and su ) into a single binary. Itโs designed to be tiny and resource-efficient, making it extremely popular in embedded systems, routers, Android devices, and Docker containers. A Note on Android and Custom ROMs This
ls -l /system/bin/su ls -l /system/xbin/su If BusyBoxโs su is the only one, you may need to use toybox (modern Androidโs default) or a proper root manager like Magisk, which provides its own SUID-safe su . Setting SUID on any binary is serious. A SUID-root BusyBox is dangerous because any bug in ls , cat , or echo could be exploited to gain root access. This is why BusyBox discourages setting SUID on the main binary. Instead, they recommend: "Only individual applets should be SUID, not the entire busybox binary." Some distributions create separate symlinks (e.g., /bin/su โ /bin/busybox ) and then set SUID on that symlink. Linux respects SUID on symlinks only in certain configurations โ another source of confusion. Summary | Problem | Cause | Solution | |---------|-------|----------| | busybox su must be suid to work properly | BusyBox su is executed without root privileges. | Install a real su binary (util-linux) or properly configure SUID on BusyBoxโs su applet. |
# As root chmod u+s /bin/busybox But this makes BusyBox command run as root when executed via the busybox binary โ a security nightmare. Method 3: Install a full-featured su On most
For embedded systems, avoid BusyBoxโs su altogether. Use sudo or a dedicated su binary from a standard package. If you must use BusyBox, ensure the su applet runs with SUID โ but be aware of the security trade-offs. Have you seen this error in the wild? The fix is usually a single chmod u+s or an apk add util-linux . Just remember: with great power (SUID) comes great responsibility.
If youโve ever worked with embedded Linux systems, recovery consoles (like ADB on Android), or minimal distributions, you might have encountered the cryptic error message: