shm_open не задает права записи группы - PullRequest
0 голосов
/ 27 июня 2018

Я создаю новый объект с общей памятью, как это

  int fd = shm_open("somekey", O_CREAT | O_RDWR, S_IRWXU | S_IRWXG);

Возвращаемое значение в порядке, и я ожидаю найти что-то вроде следующего в / dev / shm

-rwxrwx--- 1 root   group     4096 Jun 27 19:08 somekey

но вместо этого доступ на запись в файлы отсутствует, и я не знаю почему.

-rwxr-x--- 1 root   group     4096 Jun 27 19:08 somekey

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Ваш вопрос дублируется ниже темы

Права доступа к общей памяти и семафорам POSIX установлены неправильно при открытых вызовах

mode_t old_umask = umask(0);

int fd = shm_open("somekey", O_CREAT | O_RDWR, S_IRWXU | S_IRWXG);

// restore old
umask(old_umask);
0 голосов
/ 30 июня 2018

http://man7.org/linux/man-pages/man3/shm_open.3.html

биты разрешения объекта устанавливаются в соответствии с младшими 9 битами режима , за исключением того, что эти биты установлены в маске создания режима файла процесса (см. umask (2) ) очищаются для нового объекта.

Это просто Umask делает свою работу, так же, как это делает для обычного open.

...