Отказано в доступе при записи файла в var / www, несмотря на добавление меня в группу пользователей

Я дал разрешения на чтение и запись файлов в /var/www работающему пользователю (мне), выполнив шаги, указанные в . Какой самый простой способ редактировать и добавлять файлы в «/ var / www»? , Он прекрасно работает, когда я пытаюсь создать / прочитать файл в каталоге проекта.

Скажем, я работаю в /var/www/xyz

Я могу читать и записывать файлы в этой папке с помощью кода php. Теперь я создал папку внутри папки xyz, скажем, abc

/var/www/xyz/abc

В моем коде php, когда я читаю файл, расположенный внутри abc, он работает нормально, но дает me warning: permission denied, когда я пытаюсь создать файл в этой папке.

Точное предупреждение:

Warning: fopen(abc/a.txt): failed to open stream: Permission denied in /var/www/xyz/code.php

Меня попросили предоставить какой-то вывод:

stat /var/www/dodge
  File var/www/dodge' 
  Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 700h/1792d Inode: 1445503 Links: 8
Access: (2775/drwxrwsr-x) Uid: ( 33/www-data) Gid: ( 33/www-data)
Access: 2013-07-16 16:29:21.434531583 +0530
Modify: 2013-07-16 14:07:46.482782580 +0530
Change: 2013-07-16 16:28:04.622533850 +0530
 Birth: -

stat /var/www/xyz/abc
  File: /var/www/dodge/codes' 
  Size: 4096 Blocks: 8 IO Block: 4096 directory 
Device: 700h/1792d Inode: 1446465 Links: 2 
Access: (0775/drwxrwxr-x) Uid: ( 1000/ wq) Gid: ( 1000/ wq) 
Access: 2013-07-16 15:16:15.554661170 +0530 
Modify: 2013-07-16 15:13:42.698665686 +0530 
Change: 2013-07-16 15:13:42.698665686 +0530
 Birth: -
2
задан 13 April 2017 в 15:23

2 ответа

Решил эту проблему, добавив папку xyz в группу var-www. Таким образом, теперь я могу также записывать файлы в подпапках

0
ответ дан 13 April 2017 в 15:23

Для этой ситуации вам нужно добавить бит set-group-ID в каталог /var/www/xyz, чтобы вновь созданные каталоги внутри группы наследовали от родителя.

chmod g+s /var/www/xyz

См. man 2 chmod

S_ISGID (02000) set-group-ID (установить эффективный идентификатор группы процесса для execve (2); обязательная блокировка, как описано в fcntl (2) ; взять группу нового файла из родительского каталога, как описано в chown (2) и mkdir (2))

См. комментарии к ответу из указанного поста.

Редактировать после комментария:

Если вы добавили бит setgid в родительский каталог после , подкаталог был создан:

  File var/www/dodge' 
  Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 700h/1792d Inode: 1445503 Links: 8
Access: (2775/drwxrwsr-x) Uid: ( 33/www-data) Gid: ( 33/www-data)
Access: 2013-07-16 16:29:21.434531583 +0530
Modify: 2013-07-16 14:07:46.482782580 +0530
Change: 2013-07-16 16:28:04.622533850 +0530 <---added setgid
[ 1120], но подкаталог был создан до этого:

  File: /var/www/dodge/codes' 
  Size: 4096 Blocks: 8 IO Block: 4096 directory 
Device: 700h/1792d Inode: 1446465 Links: 2 
Access: (0775/drwxrwxr-x) Uid: ( 1000/ wq) Gid: ( 1000/ wq) 
Access: 2013-07-16 15:16:15.554661170 +0530 
Modify: 2013-07-16 15:13:42.698665686 +0530 
Change: 2013-07-16 15:13:42.698665686 +0530 <---before ctime above

бит setgid работает при создании новых файлов и каталогов. Это не будет работать для любого, который уже был создан. Таким образом, каталог codes по-прежнему принадлежит wq и группе wq, а другой пользователь не имеет права создавать файлы там; Вот почему вы получаете ту же ошибку, что и раньше. Либо chown подкаталог для установки правильной группы, либо удалите и воссоздайте ее.

chown :group /var/www/dodge/code
0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: