2015-04-19 2 views
0

Ссылаясь на tutorial на очередь сообщений системы V.Использование ftok для очереди сообщений

Он содержит следующий образец для ftok:

#include <sys/msg.h> 

key = ftok("/home/beej/somefile", 'b'); 
msqid = msgget(key, 0666 | IPC_CREAT); 

Почему это необходимо для файла (/ дом/Beej/некоего-файла), чтобы быть читаемыми в процессе создания ключа для очереди сообщений?

Также легко для злоумышленника просто угадать значение ключа для очереди сообщений (тип ключа длинный)?

ответ

1

На человеке страница ftok, файл должен быть доступен (не читается):

ftok() функция использует идентификатор файла с именем в заданном пути (который должен ссылаться на существующий, доступный файл)

По крайней мере, процесс должен установить его. Вы можете протестировать его с полностью нечитаемым файлом, но в каталоге, доступ к которому вы можете получить, и в файле, который доступен для чтения, но в каталоге, к которому вы не можете получить доступ.
В зависимости от типа злоумышленника, может быть, для злоумышленника будет легче, если он знает файл, который используется, и пытается угадать proj_id, который, как в случае с man-страницей, снова: Сегодня proj_id - это int, но все же используются только 8 бит.

Смежные вопросы