Назад | Перейти на главную страницу

Чтение файлов, принадлежащих www-data

У меня есть веб-сайт, который при необходимости записывает файлы. Эти файлы принадлежат www-data. У меня также есть пользователь, который запускает приложение для сбора информации из этих файлов. Написан на Python. Однако, поскольку эти файлы принадлежат www-data, мое приложение не может их прочитать, и я должен запускать приложение от имени пользователя root, чего я бы предпочел не делать. Что я могу сделать, чтобы мой пользователь мог читать файлы, созданные www-data?

РЕДАКТИРОВАТЬ, относительно комментариев:

-rw-r--r-- 1 ivan www-data 444 2011-07-20 16:34 serverfile1.php
-rw-r--r-- 1 ivan www-data 140 2011-07-20 16:34 serverfile2.php
-rw-r--r-- 1 ivan www-data 478 2011-07-20 16:35 serverfile3.php
-rw-r--r-- 1 www-data www-data 10 2011-07-20 17:41 info1.txt
-rw-r--r-- 1 www-data www-data 21 2011-07-20 17:41 info2.txt
-rw-r--r-- 1 ivan www-data 236 2011-07-20 16:35 serverfile4.php

Я все еще не могу прочитать файлы info1 и info2 с помощью пользователя ivan

Добавьте вашего пользователя в группу www-data и сделайте файлы group-readabe.

# usermod -a -G www-data username
# chmod -R g+r /var/www/files

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

  1. Код Python открывается для чтения, а не для записи
  2. Убедитесь, что каталог, в котором находятся файлы, доступен для чтения и исполнения (по крайней мере, исполняемый) для всех.
  3. Протестируйте использование cat через пользователя Ivan, если он работает, это проблема с кодом Python.

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

Вы можете проверить режим, в котором вы открываете файл с помощью Python. Если вы попытаетесь открыть его с правами записи, вы получите сообщение об ошибке.

Если, как иван, вы можете катать или возглавлять файлы info1 / info2, это, скорее всего, будет проблемой python / кода.

Альтернативой может быть запуск php как fastcgi под конкретным пользователем (php fastcgi + suexec).

пока, Стефано