403 запрещенная ошибка в Apache с корнем документа в разделе NTFS

Я новичок в Ubuntu, надеясь найти лучшую среду для веб-разработки, чем WIndows. Я пытаюсь получить доступ http://localhost но это всегда дает мне запрещенную ошибку. Я установил php, mysql и apache отдельно. Files/web_files также мой веб-каталог в Windows, который при доступе к Windows D:/Files/web_files и на убунту есть media/Files/web_files, Я также перезапустить Apache после редактирования default файл находится в etc/apache2/sites-available Я редактирую не тот файл? Пожалуйста помоги.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /media/Files/web_files
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /media/Files/web_files/>
        Options FollowSymLinks
        AllowOverride All
        order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Обновить, если я использовал var/www вместо этого это работает как волшебство.

DocumentRoot /var/www
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/>
    Options FollowSymLinks
    AllowOverride All
    order allow,deny
    allow from all
</Directory>

Вот вывод из mount команда

/dev/loop0 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
/dev/sda2 on /host type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,blksize=4096)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/wern/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=wern)
/dev/sr0 on /media/2022_21092011 type udf (ro,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,iocharset=utf8,umask=0077)
/dev/sda3 on /media/Files type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sda1 on /media/System Rese

И вот вывод из ls - laR/media

ls: cannot access -: No such file or directory
ls: cannot access laR: No such file or directory
/media:
2022_21092011  Files  System Reserved

Поэтому мне интересно, если это проблема в файловой системе или ее разрешения. Но я не думаю, что это как-то связано с разрешениями, так как я могу прекрасно редактировать файлы в media/Files/web_files без необходимости запускать его как суперпользователь. Спасибо за тех, кто нашел время, чтобы помочь мне до сих пор.

6 ответов

Решение

Похоже, что ваш диск D Windows установлен на /media/Files

В этом случае ваши файлы на самом деле в /media/Files/Files/web_files, Пожалуйста, попробуйте отредактировать файл, доступный по умолчанию для сайтов с этим путем, перезапустите Apache с помощью sudo service apache2 restart и посмотреть, если это работает.

Кроме того, как отмечает Марти в комментариях, кажется, что Nautilus монтирует NTFS-разделы с нечетными разрешениями, так что ни один пользователь, кроме вас (и, конечно, root), не может читать или записывать из него / в него.

Чтобы решить эту проблему, закройте все окна Nautilus, остановите apache2, откройте терминал и выполните следующие действия:

sudo umount / dev / sda3
mkdir / media / DriveD
sudo ntfs-3g / dev / sda3 / media / DriveD

Сейчас начнем apache2 и посмотреть, если это работает. Если это так, то лучше поставить /etc/fstab как отметил Марти.

Если вы не хотите редактировать файл / etc / fstab, сделайте это

  • Откройте терминал и введите

    udisks --mount /dev/sda3 --mount-options umask=022
    

Я полагаю, ваш раздел уже был помечен как "Файлы". В этом случае он будет установлен на /media/Files каталог. Затем вы можете выполнить php файлы в них. Но если он не помечен как "Файлы", я рекомендую сделать это с помощью disk-utility, Или, если вы предпочитаете не маркировать, измените etc/apache2/sites-available/default файл, к фактической точке монтирования.

Примечание. Если у вас нет метки с разделом, она будет смонтирована в /media/xxxx.... папка, где xxxx... - это UUID раздела.

Кредит идет к этому ответчику

Ваш диск монтируется во время работы apache? Я не знаю, будет ли автоматического монтажа достаточно или нет, но если есть проблема, вы можете явно смонтировать диск /etc/fstab, Я уверен, что этот автоматический монтаж выполняется только по требованию; он не монтируется, пока вы не откроете его в Nautilus, затем он монтируется.

Я провел тест с NTFS-разделом, смонтированным путем открытия в Nautilus, и у него не было установлено никаких полномочий для кого-либо, кроме владельца и группы владельцев, так что это, скорее всего, источник проблемы. Вам нужно будет установить права на монтирование, чтобы все читали и выполняли (r-x) разрешение на раздел. Вы знаете, как монтировать диски в `/etc/fstab'или любым другим способом. Здесь есть несколько подробных инструкций.

Основа заключается в том, что вам нужно создать каталог для монтирования раздела, традиционно в качестве подкаталога /mnt/ не /media/; /media/ традиционно используется для автоматически монтируемых устройств, например, когда вы открываете неустановленное устройство в Nautilus, или для CD/USB-приводов.

Создать каталог

Каталог, который вы создаете, должен иметь разрешения и владельца, которые вы хотите; Я обычно устанавливаю владельца для себя с правами только для чтения для остальной части вселенной (drwxr-xr-x). Этот каталог должен быть пустым, но не обязательно. Но любые файлы будут недоступны, когда что-то подключено к нему. Чтобы создать и установить разрешения для этого каталога (измените LOGIN_NAME на свое имя пользователя):

cd /mnt
sudo mkdir Files
sudo chown LOGIN_NAME:LOGIN_NAME Files
sudo chmod 755 Files

Редактировать fstab

Затем вы создаете запись в файле /etc/fstab смонтировать раздел в этот каталог. Обычно это довольно просто, хотя для NTFS требуется некоторая дополнительная информация для настройки владельца и разрешений. Вот строка, которую я использую для NTFS (все в одной строке):

UUID=0000000000000000 /mnt/Files ntfs-3g auto,users,uid=LOGIN_NAME,gid=LOGIN_NAME,utf8,dmask=002,fmask=113 0 0

Примечания: замените правильный UUID на 0000000000000000; UUID получается при вводе командной строки sudo blkid в терминале. Также замените логин на LOGIN_NAME.

Изменить файл конфигурации Apache

Затем в файле /etc/apache2/sites-available/default измените DocumentRoot, который был изначально /var/www/ в /mnt/Files/web-files, Также внесите те же изменения в каталог своего веб-сайта. Это предполагает, что существует каталог /web-files/ в корне раздела, смонтированного в /mnt/Files/,

Также убедитесь, что у вас есть файл HTML/PHP в корневом каталоге документа (.../web-files)? Это должно быть что-то вроде index.html или index.php. Вы скопировали файлы из /var/www/ в этот каталог?

Попробуйте сохранить корневой каталог Apache на собственном разделе linux (/var/www/html) и сделайте монтаж вместо этого, т.е.

mount -o bind /media/Files/web_files /var/www/html/web_files

Имейте в виду, что папка web_files должен существовать в папках /var/www/html/ и у него достаточно атрибутов для чтения.

Для всех, кто не хочет иметь дело с монтированием и перемонтированием разделов, просто убедитесь, что у вас есть правильный путь монтирования в apache.conf и 000-default.conf, затем отредактируйте /etc/apache2/envvars

Изменить www-данные

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

На ваше имя пользователя

export APACHE_RUN_USER=youruser
export APACHE_RUN_GROUP=youruser

Перезапустите apache, готово.

Лично я не пробовал NTFS, но это спасло меня:

Единственное, что вам нужно сделать, это:

<Directory "/www/mywebdirectoryinapartitioneddisk">
    Require all granted
</Directory>

это решит проблему

вот пост в моем блоге, объясняющий все подробно. Это может работать на NTFS

http://www.tbogard.com/2014/09/12/making-apache-server-to-read-a-partitioned-disk-the-definitive-solution/

DocumentRoot необходимо изменить в двух файлах конфигурации apache:

/etc/apache2/sites-available/default
/etc/apache2/apache2.conf

Вот шаги, которые я сделал, чтобы преодолеть ту же ошибку. Моя ситуация заключалась в том, что я хотел указать папку с проектами Windows Dropbox во время кодирования с использованием Ubuntu.

Настройки для раздела NTFS

Во-первых, вам нужно иметь доступ к разделу NTFS через Ubuntu. Сделайте следующие шаги, если вы этого не сделали.

$ sudo apt-get install ntfs-3g

Найдите имя вашего NTFS раздела (ов). Пример:

$ sudo fdisk -l | grep NTFS

Получите UUID вашего NTFS-раздела.

$ sudo blkid

/ dev / sda1: LABEL = "windows" UUID = "4ED2A451B2A23F59" TYPE = "ntfs"

Сконфигурируйте раздел в /etc/fstab (сделайте резервную копию на всякий случай).

$ sudo cp /etc/fstab /etc/fstab.bak
$ sudo vim /etc/fstab

Я создал мой следующим образом (на основе UUID. Следующие параметры устанавливают права на чтение, запись, выполнение и uid=1000 устанавливает вас как пользователя раздела NTFS во время загрузки ОС. Это также гарантирует, что пользователь Apache может получить доступ к вашему виртуальному хосту). направление (это то, что решило мою проблему).

/dev/disk/by-uuid/4ED2A451B2A23F59 /media/windows ntfs-3g defaults,permissions,users,uid=1000,utf8  0 0

Обратите внимание, что вам может потребоваться создать каталог /media/windows, если он не существует.

$ cd /media
$ sudo mkdir windows
$ sudo chown sagun:users windows

Перезагрузите компьютер и убедитесь, что ваш NTFS-диск автоматически подключен с разрешениями на чтение, запись и выполнение.

Настройки для настройки виртуального хоста в Apache

Создайте каталоги для размещения ваших файлов журналов (если хотите):

$ sudo mkdir /var/log/apache2/projects.dev

Создайте новый файл конфигурации в каталоге /etc/apache2/sites-available. Пример:

$ sudo vim /etc/apache2/sites-available/projects.dev

Установите вашу конфигурацию, подобную этой, и сохраните файл:

<VirtualHost *:80>
    ServerAdmin webmaster@projects.dev
    ServerName projects.dev
    ServerAlias projects
    DocumentRoot /media/windows/Users/sagun/Dropbox/projects
    <Directory />
        Options FollowSymLinks
        AuthType None
        AllowOverride None
        Order deny,allow
        Deny from all
    </Directory>
    <Directory /media/windows/Users/sagun/Dropbox/projects/>
        Options Indexes FollowSymLinks MultiViews
        AuthType None
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/projects.dev/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/projects.dev/access.log combined
</VirtualHost>

Затем отредактируйте файл /etc/hosts.

$ sudo vim /etc/hosts

Добавьте следующую строку и сохраните:

127.0.0.1 projects.dev

Активируйте хост с помощью следующей команды:

$ sudo a2ensite projects.dev

Перезапустите Apache

$ sudo service apache2 restart

Наконец, я смог зайти на http://projects.dev/ из моего браузера, где весь мой код находился в разделе NTFS из Windows и Ubuntu. Я надеюсь, что кто-то найдет это полезным. Ура!

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