Вы уже получили те же разрешения, что и при использовании mkdir
оболочки.
В оболочке mkdir:
Для каждого операнда dir утилита mkdir должна выполнять действия, эквивалентные функции mkdir(), определенной в томе System Interfaces стандарта IEEE 1003.1-2001, вызываемой со следующими аргументами:
Операнд dir используется в качестве аргумента пути.
Значение побитового ИЛИ для S_IRWXU, S_IRWXG и S_IRWXO используется в качестве аргумента режима. (Если указана опция -m, параметр-аргумент режима переопределяет это значение по умолчанию.)
Или, более читаемо (из справочной страницы BSD):
... создает каталоги, названные операндами, в указанном порядке, используя режим rwxrwxrwx (0777), измененный текущим umask(2).
Python os.mkdir
делает то же самое:
... [t] режим по умолчанию - 0777 ... текущее значение umask сначала маскируется.
Фактически Python вызывает точно такую же функцию POSIX mkdir, которая упоминается в оболочке. документация с точно такими же аргументами. Эта функция определяется как:
Биты разрешения файла нового каталога должны быть инициализированы из режима. Эти биты разрешения файла аргумента режима должны быть изменены маской создания файла процесса.
Или, что более читабельно, со страницы руководства FreeBSD/OS X:
Путь к каталогу создается с правами доступа, указанными в режиме, и ограничивается umask(2) вызывающего процесса.
Если вы работаете на платформе, отличной от POSIX, такой как Windows, Python пытается эмулировать поведение POSIX, даже если в собственной оболочке есть команда mkdir
, которая работает иначе. В основном это связано с тем, что основной такой оболочкой является Windows, у которой есть mkdir
, синоним md, и подробности того, что он делает в отношении разрешений, даже не задокументированы.
person
abarnert
schedule
17.09.2012