Cygwin замечания
Это скорее обходной путь, чем ответ.
Я недавно столкнулся с похожими проблемами с Cygwin. Причина, по-видимому, заключается в неправильной конфигурации отображения пользователей и групп Windows на пользователей и группы Cygwin. В частности, я видел, что вкладка «Безопасность» в диалоговом окне «Свойства файла» содержит записи «Группа или Имя пользователя», такие как OWNER и GROUP. Я предполагаю, что они не поддерживаются окнами.
Возможно, стоит заглянуть в mkpasswd
утилиту и прочитать списки ACL для Windows, чтобы решить эту проблему навсегда. Тем не менее, до сих пор я был в состоянии избавиться от всех ошибок прав доступа к файлу, сбрасывая списки управления доступом к Windows по умолчанию следующим образом:
wraptor: ~/tmp/su/find-xargs $ icacls.exe . /reset /t processed file: . processed file: .\.search-dirs processed file: .\.test processed file: .\dirz processed file: .\foo processed file: .\moo processed file: .\sensors processed file: .\.test\test.java processed file: .\dirz\3.java processed file: .\foo\2.java processed file: .\moo\1.java processed file: .\sensors\light.java Successfully processed 12 files; Failed processing 0 files
После этого иногда необходимо пересечь иерархию и сбросить биты разрешения:
find . -type d -exec chmod 755 {} + find . -type f -exec chmod 644 {} +
После этих шагов файлы правильно «принадлежат» windows-me или пользователю-администратору, и собственные программы windows могут читать и записывать эти файлы как обычно.
Попытка ответа
Кроме того, следует упомянуть umask . Он устанавливается в пользовательской среде (или для доступа к программе) и управляет разрешениями создаваемых впоследствии файлов и папок.
например (bash)
umask 0022
Это приведет к созданию всех файлов и папок с разрешениями 644 и 755.
например (питон)
$ cat moo.py import os for _ in ('0022', '0002', '0077'): os.umask(int(_, 8)) with open('moo.f-%s' % _, 'w') as f: f.writelines("moo\nfoo") $ python moo.py; ll moo.f-* -rw-rw-r-- 1 1K 2013-07-24 07:46 moo.f-0002 -rw-r--r-- 1 1K 2013-07-24 07:46 moo.f-0022 -rw------- 1 1K 2013-07-24 07:46 moo.f-0077
PHP имеет «идентичную» функцию umask .
Больше информации здесь: man 3p umask