403在Apache上使用NTFS分区上的文档根禁止错误

我是Ubuntu的初学者,希望找到比WIndows更好的Web开发环境。 我正在尝试访问http://localhost但它总是给我一个禁止的错误。 我分别安装了php,mysql和apache。 Files/web_files也是我在windows中的web目录,当我在Windows上访问时是D:/Files/web_files而在ubuntu上是media/Files/web_files 。 编辑位于etc/apache2/sites-availabledefault文件后,我也重新启动了apache我是否编辑了错误的文件? 请帮忙。

  ServerAdmin webmaster@localhost DocumentRoot /media/Files/web_files  Options FollowSymLinks AllowOverride None   Options FollowSymLinks AllowOverride All order allow,deny allow from all  ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/  AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all  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/"  Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128   

更新如果我使用var/www而不是魔法。

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

这是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的文件,而不必以超级用户身份运行它。 感谢那些到目前为止花时间帮助我的人。

您的Windows驱动器D似乎安装在/media/Files

在这种情况下,您的文件实际上位于/media/Files/Files/web_files 。 请尝试使用该路径编辑默认站点可用文件,使用sudo service apache2 restart启动Apache,看看它是否有效。

另外,正如Marty在评论中指出的那样,看起来Nautilus使用奇数权限安装NTFS分区,因此除了你自己(当然还有root用户)之外,没有任何用户可以读取或写入它。

要解决此问题,请关闭所有Nautilus窗口,停止apache2,打开终端并执行以下操作:

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

现在启动apache2并查看它是否有效。 如果确实如此,最好将mount安装在/etc/fstab就像Marty所说的那样。

如果您不想编辑/ 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中打开它才安装,然后它就会安装。

我通过在Nautilus中打开安装了NTFS分区进行了测试,并且没有为所有者和所有者组以外的任何人设置权限,因此这很可能是问题的根源。 您需要设置安装权限,以便每个人都具有该分区的读取和执行( rx )权限。 你知道如何在`/ 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; 通过在终端中输入命令行sudo blkid获得UUID。 另外,请将您的登录名替换为LOGIN_NAME。

编辑Apache配置文件

然后,在/etc/apache2/sites-available/default文件中,将最初为/var/www/的DocumentRoot更改为/mnt/Files/web-files 。 此外,对您的网站目录进行相同的更改。 这假设在/mnt/Files/安装的分区根目录中有一个目录/web-files/ /mnt/Files/

另外,确保文档根目录( .../web-files )中有HTML / PHP文件? 它需要像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配置文件中更改DocumentRoot:

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

以下是我为克服同样错误所采取的措施。 我的情况是,我想在使用Ubuntu进行编码时指向我的Windows Dropbox项目文件夹。

NTFS分区的设置

首先,您需要能够通过Ubuntu访问您的NTFS分区。 如果还没有,请执行以下步骤。

 $ sudo apt-get install ntfs-3g 

找到NTFS分区的名称。 例:

 $ sudo fdisk -l | grep NTFS 

获取NTFS分区的UUID。

 $ 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 

设置与此类似的配置并保存文件:

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

接下来,编辑/ etc / hosts文件。

 $ sudo vim /etc/hosts 

添加以下行并保存:

127.0.0.1 projects.dev

使用以下命令激活主机:

 $ sudo a2ensite projects.dev 

重启Apache

 $ sudo service apache2 restart 

最后,我能够从浏览器访问http://projects.dev ,我的所有代码都驻留在Windows和Ubuntu的NTFS分区中。 我希望有人觉得这很有用。 干杯!

我个人没试过NTFS,但这救了我:

你唯一需要做的是:

  Require all granted  

这将解决问题

这里的post在我的博客中详细解释了一切。 它可以在NTFS上运行

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