root以外の権限で初期ユーザースペースでプログラムを実行できますか?

root以外の権限で初期ユーザースペースでプログラムを実行できますか?

メインルートファイルシステムをインストールする前に、初期ユーザースペースでinitスクリプトでプログラムを実行しています。

root権限なしでアプリケーションを実行できますか?

明らかな問題は、起動プロセスの初期段階に「ユーザー」がないことです。

答え1

root権限なしでアプリケーションを実行できますか?

それはすべてです。 LinuxがMULTIUSERをサポートするようにコンパイルされたとします.)

明らかな問題は、起動プロセスの初期段階に「ユーザー」がないことです。

suはい、initramfsにまたはを追加しようとすると、sudo多くの設定ファイル(/etc/passwd/etc/groupsなど/etc/shadow)を追加する必要があります。しかし、この複雑さはLinuxに固有のものではありません。結局のところ、UIDはただの数字にすぎないので、root権限を取り除くことができるおもちゃプログラムを作成することが目標であれば非常に簡単です。

#include <stdlib.h>
#include <unistd.h>
int main(int argc, char** argv)
{
  setuid(atoi(argv[1]));
  execvp(argv[2], argv+2);
}

にコンパイルすると、toysu次のように呼び出すことができます。

toysu 1234 touch /tmp/example

使用するUIDはどこに1234あり、残りは実行するコマンドです。最初からルートでなければ機能しないので、sudo通常のシステムでテストするには、コマンドの前にプレフィックスを付けます。

関連情報