У меня установлен php на моей машине с Ubuntu. Корневой веб-каталог: /var/www
Я установил права доступа для этой папки следующим образом:
sudo chown -R ftpuser: www-data / var / www
blockquote>ftpuser - это пользователь, которого я настроил, чтобы я мог ftp перейти на / var / www с другого компьютера в сети. www-data - это пользователь php. Я дважды проверил, используя
whoami
из php.Всякий раз, когда я загружаю новый файл по FTP, группа не имеет прав доступа к файлу. Поэтому, когда я пытаюсь получить к нему доступ в своем браузере через
machine-name/new-file.php
, мне говорят, что в разрешении отказано, и мне нужно пойти иchmod
новый файл.Мне интересно, есть ли способ по умолчанию для пользователя / группы www-data иметь права доступа к новым файлам, чтобы мне не приходилось хранить chmod каждый новый файл?
Я уверен, что вы уже разобрались с этим, так что это для любого, у кого есть подобный запрос
, запустите команду «сменить владельца» в своей корневой папке:
sudo chown manny -R www
Это сделает вас владельцем замените "manny" на свое имя пользователя, что позволит вам писать / читать в папке www
Если Ваш веб-сервер не может даже читать файлы, то очень вероятно, что разрешения new-file.php
что-то вроде 600 (читать и писать для владельца). Ищите umask настройки в вашем FTP-приложении, и убедитесь, что это что-то вроде 007.
Если вашему веб-приложению нужно кхмодировать файлы (или другие операции, которые могут выполняться только владельцем файла), вам нужен другой подход. Если вы используете Apache, вам следует подумать об использовании itk MPM. С помощью этого модуля вы можете заставить Apache запускать/открывать файлы, используя того же пользователя, что и "ftpuser". Если вам нужна дополнительная информация на эту тему, добавьте комментарий.
Вы можете использовать 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