Is it possible to run an application here without root privileges?
Claro que é. Assumindo que o linux foi compilado com suporte a MULTIUSER;)
The obvious issue being that there is no "users" as this very early point in the boot process.
Bem, sim, se você tentar colocar su
ou sudo
no initramfs, precisará adicionar muitos arquivos de configuração ( /etc/passwd
, /etc/groups
, /etc/shadow
e assim por diante). Mas essas complexidades não são inerentes ao Linux. Afinal, o UID é apenas um número, por isso é muito fácil criar um programa de brinquedos que possa descartar privilégios de root se esse for seu objetivo:
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char** argv)
{
setuid(atoi(argv[1]));
execvp(argv[2], argv+2);
}
Se você compila como toysu
, ele pode ser invocado assim:
toysu 1234 touch /tmp/example
em que 1234
é o UID a ser usado e o restante é o comando a ser executado. Note que ele não funcionará a menos que você seja root para começar, então prefixe esse comando com sudo
para testá-lo de um sistema normal.