1

C プログラムでは、対処しRLIMIT_NPROCRLIMIT_NOFILE制限し、さらに 1024 未満のポートにバインドする必要があります。私のプログラムには 2 つの機能しか必要ないため、非特権ユーザーでこれを実行することを考えています。

ここ、プロセスの機能を設定し、setuid(). ここで、機能のセット リストを保持するプロセスを root 権限なしで fork すると、プログラムは最小限の権限で実行され続けます。私の計画の非常に大まかな概要:

int main()
{
 int nproc,nfds,port;
         /*
          *  set capabilities to the process
          *  then drop priviales
         */
   setuid(getuid()); //Drop privilages to real user id
   fork() //Now create a child apparantly which will be having parents set capabilties
   /*Now do tasks to which the whole is being played*/
   set_nproclimit(nproc);
   set_nofilelimit(nfds);
   do_bind_to_port(port);
 return 0;
}

ここでは、syscall を使用して機能を設定することができません。そのような機能のアイデアは大きな助けになります。

setcapPS: コマンド ユーティリティを使用してキャップを割り当てることもできcap_set_file()ますが、バイナリのパスについて毎回確信があるわけではないため、別の方法でこれを行いたいと考えています。

プロセスとサブプロセスのステータスを確認するためのいくつかの便利な proc コマンドcat /proc/<PID>/task/<PID>/statuscat /proc/<PID>/limits

4

0 に答える 0