Apache:chmod 755は、Mac OS 10.5上のApache httpdにシンボリックリンクまたはエイリアスを設定するのに十分ではありませんか?


15

私のMac OS 10.5マシンでは、私はのサブフォルダに設定したい~/Documentsように~/Documents/foo/htmlすることが// localhostの/ fooの:HTTPを

最初に考えたことは、次のようにAliasを使用することです。

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options Indexes FollowSymLinks MultiViews

    Order allow,deny
    Allow from all
</Directory>

403 Forbiddenになりました。error_logで私が得た:

[error] [client ::1] (13)Permission denied: access to /foo denied

問題のサブフォルダーにはchmod 755アクセスがあります。好きなものを指定してみましたhttp://localhost/foo/test.phpのが、それも機能しませんでした。次に、シンボリックリンクのルートを試しました。

に行って/Library/WebServer/Documentsシンボリックリンクを作成しました~/Documents/foo/html。ドキュメントルートには

Options Indexes FollowSymLinks MultiViews

403 Forbidden:

Symbolic link not allowed or link target not accessible: /Library/WebServer/Documents/foo

これを設定するには他に何が必要ですか?

解決策

$ chmod 755 ~/Documents

一般に、共有するフォルダーとそのすべての祖先フォルダーは、wwwサービスユーザーが表示できる必要があります。


このソリューションを投稿してくれてありがとう-これは本当に答えを探して年齢を費やした後、私を助けてくれました
トンバ

@Tomba問題ありません。
ユージン横田

回答:


24

アクセスしたいディレクトリの上のいくつかのディレクトリには、Apacheがそのディレクトリを横断することを許可する権限がないと思います。Apacheを実行している(sudo -i -u apacheまたは何でも)ユーザーになり、目的のディレクトリとそのディレクトリに移動してみてくださいls。できない場合は(期待どおり)、その上にあるディレクトリに1つずつアクセスしてみてください。そのサブディレクトリは、o+x設定が必要なサブディレクトリです。泡立て、すすぎ、必要に応じて繰り返します。


1
[サイトの"働いている場合は、「サイト」を用いると、おそらくあなたのユーザーディレクトリを右問題を持って働いていない場合は、[はい、あなたはおそらく、ドキュメント上の権利問題を抱えている(この缶は、FileVaultをして追加)
半径

1
〜/書類700だった
ユージン横田

sudo -i -u _wwwOS Xで実行する場合(ApacheユーザーはOS XのデフォルトのApache構成で_wwwであるため)、そうするとwhoami、_wwwではなくユーザー名を取得します
ジェイソンS

sudoを使用して別のユーザーに完全に変更するには、「-」を単独で使用しますsudo - www-data(Ubuntuの場合)。
アレクシスウィルク

2

使用する +FollowSymlinks

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options +Indexes +FollowSymLinks +MultiViews

    Order allow,deny
    Allow from all
</Directory>

httpd.apache.org/docs/2.0/en/mod/core.html#optionsによると、「Optionsディレクティブのすべてのオプションの前に+または-記号が付いている場合、オプションはマージされます。」〜/ドキュメントが700になるのにどのように役立ちますか?
ユージン横田

AFAIK FollowSymLinksはオプションを有効にせず、ディレクトリ階層の下位レベルでのみ有効にすることを許可します。
デイブチェイニー

1
これは私にとって正解でした。/ etc / apache2 / usersのconfファイルを変更し、FollowSymLinks(+なし)を許可しました。必ず再起動してください。
超光度

1

ファイルボルトが有効になっていないことを確認してください。同じ問題がありました。私は見つけることができる他のすべてを試しました。何も機能しませんでした。しかし、これを理解しようとして1時間後、ファイルボルトを有効にしていたことを思い出しました。

無効にすることで問題は解決しました。


1

シンボリックリンクの所有権を確認してください。Mac OS Xを使用しているため、シンボリックリンクの所有者を変更できます。では/Library/WebServer/DocumentsDOls -l

へのシンボリックリンク~/Documents/foo/htmlが呼び出されfoo、次のような権限がある場合

lrwxr-xr--  1 root  wheel 27  2 Nov 17:00 foo -> /Users/username/Documents/foo/html

次に、OS XではデフォルトでApacheは_wwwユーザーおよび_wwwグループとして実行されるため、上記のケースではシンボリックリンクをたどることができません。 ~/Documents/foo/html

man 8 chownシステム端末で実行するか、オンラインで見てくださいman chown

この-hオプションを使用すると、それが指すファイル(ソース)ではなく、シンボリックリンク自体の所有権が変更されることがわかります。その後、次のようなことができます

sudo chown -h :_www foo 

これにより、simlinkが

lrwxr-xr--  1 root  _www 27  2 Nov 17:02 foo -> /Users/username/Documents/foo/html

また、Apache _wwwグループはリンクを通過できます。


0

/ Usersディレクトリ(ls -l / Users)をチェックして、ユーザー(誰か)の権限を確認します。
また、「Sites」ディレクトリはlocalhost /〜someoneで正しく使用できますか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.