それで一度試してみましたsetuid
。私の理解によると、ユーザーは所有者のコンテキストでバイナリを実行できます。だから私は/root
「root」ユーザーだけが実行できるディレクトリに書き込み操作を実行するプログラムをCで書いています。これをコンパイルし、生成されたバイナリの所有者を「root」に変更し、setuid
次を使用して権限を追加しました。
$ chmod u+s binary_generated
ファイル権限は次のとおりです。
-rwsrwxr-x 1 root root 21112 Jun 29 11:26 binary_generated
/root
これで、一般ユーザーはrootユーザーコンテキストを使用してこのバイナリを実行でき、ディレクトリに書き込むことができるはずです。しかし、まだPermission Denied
エラーが発生します。
[!!] Fatal Error in main() while opening file: Permission denied
私はPop!_Os 20.04とLinux 5.4.0-7634-genericを使用しています。
私の考えでは、OSのカーネルやセキュリティ機能と関連があるようです。