prctl (pr_set_dumpable, 1) имеет видимые побочные эффекты? - PullRequest
0 голосов
/ 01 декабря 2011

Я использовал prctl(pr_set_dumpable, 1) после setuid() вызова, чтобы включить генерацию coredumps. Я обнаружил, что использование prctl(pr_set_dumpable, 1) также меняет владельца: группа всех файлов в /proc/(pid) месте, это побочный эффект или ожидается?

Ответы [ 3 ]

2 голосов
/ 03 февраля 2012

Для справки, я просто споткнулся об этом сам, пытаясь отключить coredumps с , и я не использую setuid. Когда я запустил эту программу:

#include <stdio.h>
#include <stdlib.h>
#include <sys/prctl.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
  char ls_cmd[64];
  snprintf(ls_cmd, sizeof(ls_cmd), "/bin/ls -ld /proc/%d/fd", getpid());

  system(ls_cmd);

  if (0 > prctl(PR_SET_DUMPABLE, 0)) {
    perror("can't prctl(PR_SET_DUMPABLE)");
    return 1;
  }

  system(ls_cmd);

  return 0;
}

Я получил этот результат (отредактирован):

$ ./prctl-and-proc
dr-x------ 2 myuname mygroup 0 Feb  2 17:08 /proc/23999/fd
dr-x------ 2 root root 0 Feb  2 17:08 /proc/23999/fd
1 голос
/ 12 апреля 2014

Да, это делается с помощью dumpable.Вы можете понять почему, посмотрев на

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/fs/proc/base.c?id=refs/tags/v3.14

и выполнив поиск «dumpable».Идентификаторы inode сначала устанавливаются в GLOBAL_ROOT_UID, а затем устанавливаются в uid владельца, только если задача является дамповой.

0 голосов
/ 01 декабря 2011

Вы уверены, что это системный вызов prctl, а не setuid, который меняет владельца на /proc/self/?Я предполагаю, что setuid должно изменить это ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...