Сначала немного предыстории: я занимаюсь созданием сайтов на Drupal на машине с Windows 7. Drupal имеет модуль изображений, который, в общем, позволяет кэшировать изображения. Когда вы создаете стиль изображения, модуль создает каталог. Например, если вы создадите стиль my_image_style он автоматически создаст папку sites/default/files/img/styles/my_image_style/and/some/other/folders/beneath . Однако созданный каталог имеет владельца: group Administrators:System с разрешением d--------+ . Все остальное, вплоть до рута - это chrisrockwell:None . Apache (это настройка WAMP5) также chrisrockwell:None .

Модуль Drupal должен создавать файлы в этом каталоге, но не может из-за проблем с разрешениями.

Итак, как в этой настройке указать, какому пользователю: группа принадлежит созданный каталог?

Я не уверен, имеет ли это эффект, но я делаю в основном все в Cygwin (перемещение, открытие, vim).

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, или если она лучше подходит для другого сайта.

ОБНОВЛЕНИЕ: Если я chmod 777 весь каталог сайта, единственная папка, в которой я получаю разрешение, это папка image_style, созданная скриптом Drupal.

2 ответа2

1

Я видел похожие проблемы с другими приложениями в Windows, которые неправильно настраивали группу при запуске от имени администратора. Я не знаю, как исправить исходную проблему создания каталогов, но вы можете переназначить владельца и группу для всех каталогов в cygwin, используя chown:

chown -R chrisrockwell:none my_image_style
0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .