Права доступа к файлу по умолчанию для пользователя php www-data

У меня установлен php на моей машине с Ubuntu. Корневой веб-каталог: /var/www

Я установил права доступа для этой папки следующим образом:

sudo chown -R ftpuser: www-data / var / www

ftpuser - это пользователь, которого я настроил, чтобы я мог ftp перейти на / var / www с другого компьютера в сети. www-data - это пользователь php. Я дважды проверил, используя whoami из php.

Всякий раз, когда я загружаю новый файл по FTP, группа не имеет прав доступа к файлу. Поэтому, когда я пытаюсь получить к нему доступ в своем браузере через machine-name/new-file.php, мне говорят, что в разрешении отказано, и мне нужно пойти и chmod новый файл.

Мне интересно, есть ли способ по умолчанию для пользователя / группы www-data иметь права доступа к новым файлам, чтобы мне не приходилось хранить chmod каждый новый файл?

8
задан 17 January 2011 в 19:27

3 ответа

Я уверен, что вы уже разобрались с этим, так что это для любого, у кого есть подобный запрос

, запустите команду «сменить владельца» в своей корневой папке:

sudo chown manny -R www

Это сделает вас владельцем замените "manny" на свое имя пользователя, что позволит вам писать / читать в папке www

4
ответ дан 17 January 2011 в 19:27

Если Ваш веб-сервер не может даже читать файлы, то очень вероятно, что разрешения new-file.php что-то вроде 600 (читать и писать для владельца). Ищите umask настройки в вашем FTP-приложении, и убедитесь, что это что-то вроде 007.

Если вашему веб-приложению нужно кхмодировать файлы (или другие операции, которые могут выполняться только владельцем файла), вам нужен другой подход. Если вы используете Apache, вам следует подумать об использовании itk MPM. С помощью этого модуля вы можете заставить Apache запускать/открывать файлы, используя того же пользователя, что и "ftpuser". Если вам нужна дополнительная информация на эту тему, добавьте комментарий.

1
ответ дан 17 January 2011 в 19:27

Вы можете использовать ACL. Для настройки ACL для Ubuntu 10.10, сначала смонтируйте файловые системы с опцией acl в /etc/fstab.

sudo vim /etc/fstab

UUID=xxxxxx-xxxx-xxxx-xxxxx-xxxxxx / ext4 по умолчанию,acl 0 1

sudo mount -o remount,acl /

Затем создайте группу, к которой может принадлежать пользователь для этой цели.

sudo groupadd developers
sudo usermod -a -G developers $username

Пользователь должен выйти и войти снова, чтобы стать членом группы разработчиков.

Конечно, не делайте этого, если у вас есть содержимое в каталоге /var/www, которое вам нужно, но чтобы проиллюстрировать его настройку для запуска:

sudo rm -rf /var/www
sudo mkdir -p /var/www/public
sudo chown -R root.developers /var/www/public
sudo chmod 0775 /var/www/public
sudo chmod g+s /var/www/public
sudo setfacl -d -m u::rwx,g::rwx,o::r-x /var/www/public

Затем замените ссылки на "/var/www" на "/var/www/public" в конфигурационном файле и перезагрузите.

sudo vim /etc/apache2/sites-enabled/000-default
sudo /etc/init.d/apache2 reload

Если мы хотим ограничить удаление и переименование у всех пользователей, кроме пользователя, который создал файл:

sudo chmod +t /var/www/public

Таким образом, если мы хотим создать каталоги для фреймворков, которые существуют за пределами Корень документа Apache или, может быть, создание каталогов для записи на сервер, всё ещё просто.

Каталог логов Apache:

sudo mkdir /var/www/logs
sudo chgrp www-data /var/www/logs
sudo chmod 0770 /var/www/logs

Каталог библиотек для чтения Apache:

sudo mkdir /var/www/lib
sudo chgrp www-data /var/www/lib
sudo chmod 0750 /var/www/lib
6
ответ дан 17 January 2011 в 19:27

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

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