2

さまざまなユーザーのリクエストを処理するサーバーがあります。クライアントに接続した後、子プロセスをフォークsetuid()し、クライアントユーザーに切り替えるために使用します。親のuidも設定しているように見えます。

子プロセス専用のuidを設定するにはどうすればよいですか?


[編集]私はすべてを小さな例にまとめましたが、うまく機能しています。でヒントをありがとうfork();

#include <stdio.h>
#include <unistd.h>

int main() {
  int uid[] = { 11942, 11943 };
  char *file[] = { "user1", "user2" };

  int i = 0;
  for (i = 0; i < 2; i++) {
    printf("parent, i = %i\n", i);
    pid_t child = fork();
    if (child == 0) {
      printf("child, uid = %d\n", uid[i]);
      if (setuid(uid[i]) == -1) {
        perror("setuid(11942)\n");
      }

      FILE *f = fopen(file[i], "w");
      fclose(f);

      return 0;
    }
  }

  return 0;
}
4

0 に答える 0