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
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. Я надеюсь, что кто-то найдет это полезным. Ура!