it-swarm-ja.com

ホームディレクトリにシンボリックリンクされたApache-権限エラー

/var/www/をホームフォルダー内の新しいWebrootディレクトリーにシンボリックリンクするときに問題が発生します。これらは、Linuxの許可に関する理解不足から生じていると思います。

私が知っている限りでは、シンボリックリンクはリンクしたいディレクトリとリンクしたいディレクトリの形をとる必要があるので、私の場合、私は走りました:

Sudo ln -s ~/Webroot/* /var/www/

/var/www/lsを実行すると、Webrootディレクトリ内のすべてのファイルを表示できます。

Webrootフォルダーにあるファイルを実行しようとすると、403許可エラーが発生します。これは、Webrootディレクトリー内のファイルが私によって作成され、Apacheインスタンスがwww-dataとして実行されているためです。 ?

この場合、これを実行するには、作成するすべてのファイルのアクセス許可を変更する必要がありますか?

以前にローカルApacheインスタンスを実行し、デフォルトの仮想ホストのディレクトリルートをWebrootフォルダーにポイントしました。このインスタンスでは、アクセス許可を変更する必要はありませんでした。任意の助けをいただければ幸いです。

14
richzilla

これは良い習慣ではありません、Weboideに同意します。しかし、この目標を達成する簡単な方法があります。

1)。 Apache userdirモジュールを有効にします。

Sudo  a2enmod userdir

これにより、Apache userdirモジュールが有効になります。これで、Webサイトのコンテンツを~/Webroot/またはホームディレクトリ内に置くことができます。

注:デフォルトのフォルダーは~/public_htmlです

2)。 /etc/Apache2/mods-enabled/userdir.confに必要な変更を加えます。

3)。 Apacheを再起動します

Sudo /etc/init.d/Apache2 restart

これで、ブラウザを http:// ip-address /〜username に移動して、サイトにアクセスできます。このサイトに仮想ホストを設定することもできます。

PHPファイルを実行する場合は、もう1ステップ実行する必要があります

/etc/Apache2/mods-enabled/php5.confを編集して、次の行をコメント化します。

 <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

次に、Apacheを再起動します。

それでおしまい。できました。

Ref:https://wiki.ubuntu.com/UserDirectoryPHP

お役に立てれば。問題が発生した場合は、ここに投稿してください。

14
aneeshep

これは、あなたが望むものを達成するための良い習慣ではありません。

PHPを使用している場合は、suexecsuphpまたはphp-fpmおよびfastcgiをご覧ください。 =。


あなたはあなたの問題について正しいです、これはあなたのWebrootファイルがwww-dataとは異なるユーザーによって所有されているという事実における許可の問題です。

以下は、問題を回避するそれほど悪くない解決策です。 おそらくSudoを使用するか、rootとしてログインする必要があることに注意してください。実行するすべてのコマンドを完全に理解してください!!

Webrootフォルダーとサブフォルダーとファイルを変更して、グループの所有権をwww-dataに設定し、適切な権限を設定します。

# set the group ownership to be www-data
chgrp -R www-data /path/to/home/Webroot/
# make sure www-data has read & write permissions (change it to `g=r` if you want to only give read-only access)
chmod -vR g=rw /path/to/home/Webroot/
# make sure www-data can access the folders by adding the group execute bit field to directories
find /path/to/home/Webroot/ -type d -print0 | xargs -0p chmod -v g+x

編集:通常のユーザーアカウントを使用してファイル/フォルダーを追加する場合、これらのコマンドを再度実行する必要があることに注意してください。

6
Weboide

Debian Lennyでもほぼ同じことをしましたが、非haxモードに変更し、Apacheを正しく構成しました。しかし、シンボリックリンクの場合:

$ ll /home
drwxr-xr-x  8 root   root   4,0K nov 14 14.59 .
drwxrwxrwx  7 root   root   4,0K nov 14 21.24 www -> /var/www

および〜/ Webrootの許可を確認する必要があると思いますyour dir(〜)は読み取り保護されていると思います、これを実行する必要があります:

$ ls -la /home

適切な許可を設定するには、次を使用します。

# chmod 755 /home
# chmod 755 /home/<YOURNAME>
# chown <YOURNAME>:www-data -R /home/<YOURNAME>/Webroot
# chmod 775 -R /home/<YOURNAME>/Webroot

役立つと思いますが、これについてもっと情報をください。例として、ディレクトリからWebrootを取得することをお勧めします。 to / home)meのようになります。これはセキュリティの問題になる可能性があるためです。

"#"はroot permissonを意味します。コマンドの前にSudoと記述します。 「$」は単一ユーザーの許可を意味します

1
antivirtel

この問題に直面しました。しかし、ホームディレクトリのグループをwww-dataに変更するというアイデアは好きではありませんでした。この問題は、virtualHostの構成ファイルを変更することで簡単に解決できます。これらを含めるようにDirectoryタグを設定するだけです

<Directory "your directory here">
   Order allow,deny
   Allow from all
   Require all granted
</Directory>

Require all grantedは私が推測する新機能です。デフォルト値はdeniedです。

参照用にこのページを参照してください: http://httpd.Apache.org/docs/current/mod/core.html#directory

0
Peter

宛先だけでなく、その親に関する権限も確認する必要があります。

0
zVictor