Функция linux mkdir не может разрешить полное разрешение - PullRequest
4 голосов
/ 04 января 2012

Я тестирую функцию mkdir, чтобы создать новый каталог:

folder =  mkdir("./linux", 511);

или

 folder = mkdir("./linux", 0777);

или

folder = mkdir("./linux", S_IRWXU | S_IRWXG | S_IRWXO);

Как видите, я пытаюсь авторизовать полное разрешение для каталога, но вот что получается ls -l | grep linux:

drwxr-xr-x 2 manuzhang manuzhang 4096 2012-01-04 06:53 linux

почему я не могу авторизовать разрешение на запись для группы и других?

Обновление
странная вещь, как вы, ребята, сказали мне, я попробовал umask. Он работает с umask(S_IWGRP) или umask(S_IWOTH), но не работает с umask(S_IWGRP | S_IWOTH), есть идеи?

Ответы [ 3 ]

6 голосов
/ 04 января 2012

С man 2 mkdir:

Режим аргумента определяет разрешения для использования.Он изменяется с помощью umask процесса обычным способом: разрешения для созданного каталога: (mode & ~ umask & 0777).

Я предлагаю вам взглянуть на ваш umask - возможно, он установлен0022.Попробуйте chmod post- mkdir.

3 голосов
/ 04 января 2012

Разрешения, установленные системными вызовами, такими как mkdir и open, всегда маскируются против umask текущего процесса. Вы можете изменить текущий umask, используя функцию umask(); не забудьте вернуть его обратно, когда закончите.

0 голосов
/ 04 января 2012

Проверьте функцию umask: man 2 umask

...