Apache Webserver - Как записывать в dir / файлы с разрешениями, установленными на 755 вместо 777 - PullRequest
4 голосов
/ 20 июля 2009

Я только что научился устанавливать Apache 2 на мой локальный хост Ubuntu Linux. Я заставляю его работать с PHP5.

Я заметил, что всякий раз, когда я хочу записать в файл или каталог, мне нужно назначить chmod 777.

Но из моего опыта работы со сторонними хостинговыми решениями мне обычно разрешается записывать в файлы и директории с разрешениями 755.

Что я могу сделать на своем локальном хосте, чтобы я мог записывать в файлы и директории с разрешениями 755? Если ответ на этот вопрос очень длинный, может ли кто-нибудь отправить мне ссылку на пошаговое руководство для этого?

Ответы [ 3 ]

16 голосов
/ 20 июля 2009

Вот несколько простых правил управления контентом веб-сайта (под apache), которым должно следовать большинство людей:

  1. Весь контент должен быть chown'd & chgrp'd тому же пользователю, на котором работает apache. На новых установках Ubuntu пользователь и группа оба являются "www-data".
  2. Если вы хотите администрировать обслуживающие файлы в своей собственной группе пользователей, то вам следует добавить себя в группу www-data и убедиться, что пользователи в этой группе имеют доступ на чтение / запись ко всем обслуживающим файлам и каталогам. Предостережение заключается в том, что вы не должны создавать новые файлы в качестве своей личной учетной записи. Они все еще должны принадлежать www-данным. Самый простой способ сделать это - создать файл как вы сами, а затем прикрепить его к www-data: www-data.

Если вы сделаете эти 2 вещи, тогда вы сможете писать в файлы, которые обслуживаются Apache. Я не уверен, где находится корень вашего документа, но что-то вроде этого, вероятно, подойдет для большинства простых установок:

$ sudo usermod $USER -a -G www-data 
$ cd /var/www
$ sudo chown -R www-data:www-data .
4 голосов
/ 20 июля 2009

Вы, вероятно, не можете достичь этого, потому что владелец файла отличается от пользователя, пытающегося выполнить действие с файлом.

разрешения:

владелец группы все

rwx-rwx-rwx

i.e.  111 = 7 which allows read/write and execute.  
101 = 5 which is just read and execute

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

последние 7 (т. Е. Rwx-rwx-111 (7)) означают, что во всем мире каждый имеет доступ на чтение / запись к этому файлу.

как это исправить
В Linux вы можете использовать команду chown или chgrp для достижения желаемых результатов.

0 голосов
/ 20 июля 2009

Во-первых, вы захотите выяснить, от какого пользователя работает ваш PHP-код. Если вы используете mod_php5 (имя пакета libapache2-mod-php5) с Apache для запуска с MPM «worker» или «prefork», это, вероятно, будет www-data.

Это не большая проблема, если вы запускаете только одно веб-приложение на сервере. Однако, если вы запускаете несколько приложений (или сценариев, принадлежащих более чем одному пользователю), вы настраиваете себя на все виды «развлечения», связанные с безопасностью.

...