PHP и CHMOD вопрос - PullRequest
       30

PHP и CHMOD вопрос

0 голосов
/ 06 января 2010

Я хочу, чтобы мое программное обеспечение PHP могло автоматически обновляться. Чтобы это работало, мне нужен PHP, чтобы можно было записывать в файлы как существующие, так и несуществующие (create). Будет ли это всегда работать, если я просто CHMOD целевых файлов будет 0777, а затем записать в него? Или процесс PHP / Apache / wtvr должен быть владельцем файла?

Иногда, когда люди загружают с использованием учетной записи FTP, владелец может отличаться от процесса PHP, это проблема?

Редактировать: я создаю приложение PHP, я не могу знать, на каких конфигурациях будет работать приложение, и я не могу изменить какие-либо настройки, связанные с сервером. Я могу делать то, что умеет PHP, например chown (), chmod ().

Ответы [ 2 ]

2 голосов
/ 06 января 2010

У меня есть один сервер, на котором при загрузке файлов через FTP право собственности на файл переходит к пользователю ftp, что в прошлом вызывало несколько проблем с правами доступа.

Мы используем группы, чтобы обойти это

Например, вы можете создать группу пользователей для доступа к файлам и добавить в группу apache и каждого из ваших пользователей ftp:

usermod -a -G appUpdaters www
usermod -a -G appUpdaters ftp1
usermod -a -G appUpdaters ftp2
etc...

Затем вы можете назначить файл / папки пользователю + группе и выполнить chmod 775

.
chown www.appUpdaters foldername
chmod 775 foldername

Таким образом, если владелец изменится на ftp1.appUpdaters или ftp2.appUpdaters, другие пользователи все равно смогут записывать в файл.

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

http://www.cyberciti.biz/faq/howto-linux-add-user-to-group/

1 голос
/ 06 января 2010

Сделайте папку, в которую вы хотите загрузить, принадлежащей вашему www серверу. Тогда ваш php-скрипт сможет писать в эту папку, если он chmodded 755.

# chown www somefolder
# chmod 755 !$

(Не делайте другие вещи в ваших веб-файлах, принадлежащих www).

...