ユーザーディレクトリ内のフォルダへのシンボリックリンクが設定された Apache 仮想ホストが 403 Forbidden で失敗する

ユーザーディレクトリ内のフォルダへのシンボリックリンクが設定された Apache 仮想ホストが 403 Forbidden で失敗する

誰かが以前にこの質問をしたり回答したりしたことがあると思いますが、私の検索ではあまり役に立たなかったので...

私のLinuxボックス(LM13)にはEclipse IDEがインストールされており、「ワークスペース」フォルダは@にあります。 /home/user/projects/workspace

私はApacheをインストールしてセットアップし、さまざまな仮想ホストで動作させていますが、それらはすべてWebルートの下のどこかにフォルダを持っています。/var/www/...

私が抱えている問題は、Eclipse ワークスペース内のプロジェクト用に構成した vhost に Apache がアクセスできず、「403 - 禁止 - このサーバーの / にアクセスする権限がありません」というエラーが表示されることです。

まず、通常のvhost構成を試し、次に /var/www/freelance/projectEclipseワークスペースのプロジェクトフォルダーにリンクされたWebルート@の下のSymLinkを使用してみました。

セクションのオプション ディレクティブの両方FollowSymLinksを試しましたが、ブラウザーで Apache を使用してアクセスすることはできません。SymLinksIfOwnerMatch<directory ...>

この設定を機能させる方法を教えてください。mod_userdirまだ試していませんし、フォルダーのファイル権限を設定して/homeApache へのアクセスを許可したこともありません。どちらも好ましくないようです。別の方法はありますか?

私の vhost 設定は次のとおりです:

# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
    NameVirtualHost my.iagd:80
    ServerAlias *.my.iagd
#   ServerAdmin username@domain

    DocumentRoot /var/www/freelance/iagd

    <Directory /var/www/freelance/iagd/>
        Options FollowSymLinks SymLinksIfOwnerMatch
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    # Define custom log level
    LogLevel warn

    # Set up custom log files
    ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
    CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>


アップデート

出力元ls -alFd ~/Projects/workspace/iagd:-

    drwxr-xr-- 6 user www-data 4096 Aug 22 14:12 IAGD/

同じ出力/home/user:-

    drwx------ 74 user user 20480 Aug 23 07:30 /home/user/

答え1

ホーム ディレクトリのサブディレクトリに Directory ディレクティブを追加する必要があります。Apache がシンボリック リンクにアクセスする場合、シンボリック リンク ポインタではなく、シンボリック リンクが指す実際のディレクトリがアクセスされます。

したがって、必要なものは次の 2 つです。

まず、オペレーティング システムの権限です。ディレクトリは Apache ユーザーに対して読み取り可能である必要があります。つまり、その上の階層にあるすべてのディレクトリに Apache ユーザーの実行ビットが設定されている必要があります。

次に、Apache の設定です。Apache に、そのディレクトリからの読み取りが許可されていることを伝える必要があります。通常は、Apache が読み取りを許可されるディレクトリ階層を限定する必要があります。そうしないと、すべての Web ユーザーが、たとえばパスワード ファイルを見たり、全員のホーム ディレクトリを閲覧したりできるようになります。したがって、Web ルート階層外のディレクトリにアクセスしたい場合は、Apache に許可するように伝えるディレクティブを追加する必要があります。次のようになります。

# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
    NameVirtualHost my.iagd:80
    ServerAlias *.my.iagd
#   ServerAdmin username@domain

    DocumentRoot /var/www/freelance/iagd

    <Directory /var/www/freelance/iagd/>
        Options FollowSymLinks SymLinksIfOwnerMatch
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    <Directory /home/user/projects/workspace>
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    # Define custom log level
    LogLevel warn

    # Set up custom log files
    ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
    CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>

関連情報