Разрешения для файлов по умолчанию для пользователей РНР ВСП-данных

У меня есть php, установленный на моей машине ubuntu. Корень сети /var/www

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

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

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

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

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

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

33 ответа

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

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

1
ответ дан 13 August 2018 в 16:45

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

запустил команду «change ownership» в вашей папке webroot:

  sudo chown manny -R www  

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

4
ответ дан 13 August 2018 в 16:45

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

  sudo vim / etc / fstab  

UUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 defaults, 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 -mu :: rwx, g :: rwx, o :: rx / var / www / public  

Затем замените ссылки на «/ var / www» с «/ var / www / public» в файле конфигурации и перезагрузкой. [!d1 3]

  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
ответ дан 13 August 2018 в 16:45
  • 1
    Это отлично сработало для меня, но мне было бы интересно, если бы вы могли объяснить, что сделали команды chmod g + s и setfacl (и их параметры). – Greg 7 July 2015 в 16:20

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

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