почему новый pid меньше, чем старые?

Дающий является простым настольным приложением совместного доступа к файлам. Другие люди, выполняющие Дающего в Вашей сети, автоматически обнаружены, и можно отправить файлы им путем простого перетаскивания файлов к их фотографии или значку, показанному в Дающем.

В Ubuntu:

sudo apt-get install giver
4
12.10.2011, 02:43
4 ответа

На Linux PIDs присвоены в порядке, но в конечном счете система поразит свой предел PID и запустится, пропуская уже присвоенный PIDs.

9
27.01.2020, 20:47
  • 1
    И это верно для примерно всего UN*Xes, не просто Linux. –   26.07.2015, 22:06

Я думал, что PIDs был присвоен случайным образом, чтобы препятствовать тому, чтобы взломщики предположили временные имена файлов, которые обычно имеют строковое представление PID процесса в них. Но я был неправ. Я записал следующую небольшую программу C и выполнил ее на RHEL 5, x86_64, для проверки:

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int
main(int ac, char **av)
{
        int cnt;
        pid_t firstpid = getpid();

        long diff = 32768 - firstpid;
        cnt = diff;

        printf("Going to fork %d times\n", cnt);

        while (cnt)
        {
                pid_t mypid = getpid();
                printf("cnt %d, pid %d\n", cnt, mypid);
                switch (fork())
                {
                case 0: break;
                case -1:
                        fprintf(stderr, "fork() problem: %s\n", strerror(errno));
                        _exit(9);
                        break;
                default:
                        _exit(0);
                        break;
                }
                --cnt;
        }
        return 0;
}

Самый большой числовой PID, который я мог получить, был 32767, 2^15-1, что может поместиться в короткие 2 байта со знаком. Я буду дядей обезьяны.

2
27.01.2020, 20:47

Это удаляет предсказуемость, которая является проблемой безопасности.

0
27.01.2020, 20:47
  • 1
    Этого не происходит на Linux. Не на любом Linux я когда-либо использовал, так или иначе. И кроме того, только с 15 битами под угрозой, нет большой безопасности, которая будет получена. Рандомизированный PIDs мог бы быть ценным с 32-разрядным PIDs. –  Warren Young 11.10.2011, 19:43
  • 2
    Извините, я интересуюсь этим. Что удаляет предсказуемость, и как это могло создать проблему безопасности? –  Teekin 11.10.2011, 21:11
  • 3
    очень много программ, которые создают временные файлы, поместил PID в имя временного файла. Если можно предположить следующий PID, иногда можно создать временный файл, прежде чем программа сделает. Если временный файл, который создает взломщик, получает UID той программы и GID, взломщик может создать сценарий для выполнения как тот UID. Не может привести реальные примеры, но я знаю, что это произошло. –  Bruce Ediger 11.10.2011, 22:05
  • 4
    @WarrenYoung я вполне уверен, существует патч, плавающий вокруг. Это не полезно, если Вы также не повышаете размер PID до, по крайней мере, 2^31 если не 2^63: добавление приблизительно 7 битов непредсказуемости не покупает много. –  Gilles 'SO- stop being evil' 12.10.2011, 02:45

Это нормально. Когда новый процесс запускается, он имеет новый идентификатор процесса, но он не требуется, чтобы быть больше.

0
27.01.2020, 20:47

Теги

Похожие вопросы