Права доступа к файлу mkfifo выполняются неправильно

Следующая строка в моей программе C должна предоставить права на чтение и запись All/Group/Owner.

mkfifo("/tmp/dumbPipe", 0666)

Но как только я выполняю код и проверяю разрешение, не установленное для битов записи, я получаю

prw-r--r-- 

Владельцы те же, Это проблема, так как я создаю канал в каталоге tmp? Когда я запускаю chmod 666 из строки cmd, все разрешения устанавливаются правильно.


person whatWhat    schedule 27.08.2009    source источник


Ответы (2)


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

Цитата из man 3 mkfifo:

Он модифицируется umask процесса обычным способом: права доступа к созданному файлу (mode & ~umask).

Цитата: man 2 umask

Типичное значение по умолчанию для umask процесса — S_IWGRP | S_IWOTH (восьмеричное 022). В обычном случае, когда аргумент режима для open(2) указывается как:

      S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH

  (octal 0666) when creating a new file, the permissions on the resulting file will be:

      S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH

  (because 0666 & ~022 = 0644; i.e., rw-r--r--).
person P Shved    schedule 27.08.2009

Салам, я знаю, что уже поздно, но для других пользователей я решил написать этот комментарий. Даже если вы укажете 0666 в качестве разрешения, вы должны знать, что есть еще один фактор, который называется «создание файлового режима процесса», поэтому вопрос:

как изменить текущий режим создания файла процесса?

Ответ: используйте umask (разрешение) в начале вашей программы и дайте 0000 в качестве разрешения.

http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html

это должно помочь.

person Saadane Othmane    schedule 17.07.2014