2012-07-30 4 views
7

これは私が達成しようとしているものです。var/www/htmlからシンボリックリンクを家庭(~)のディレクトリに作成しています。私が自宅でシンボリックリンクしようとしているディレクトリ(~)はgitリポジトリです。私はこのディレクトリにindex.htmlファイルを持っています。var/www/htmlのシンボリックリンクを使用しようとしています

Amazon EC2インスタンスで、次のコマンドを使用して、ln -s ~/dirIWant/ htmlというvar/www/htmlへのシンボリックリンクを作成しましたが、私のウェブページにアクセスしようとすると次のエラーが発生します:403 Forbidden "You don't have permission to access/on this server."私はapache 。

他の誰かが同様のことをやろうとしていて、うまく動作していますか?

現在、私のウェブサイトwww.blah.comにアクセスすると、この403エラーが表示されます。私はsudo chown -h apache:apacheを使ってパーミッションを変更しようとしましたが、それは役に立たないようです。他のアイデアはありますか?

+1

'apache'ユーザ(または同等のもの)には、あなたのホームディレクトリへの読み出し許可がありません。 Chmod/chownを実行して、関連するユーザーに許可を与えます。 BTWでは、 '/ var/log/httpd/error_log'や、httpdがエラーを記録している箇所では、やや多くのメッセージが表示されます。 –

+0

@FrankFarmer sudo su apacheを使用してapacheユーザーに切り替えると、このメッセージが表示されます。このアカウントは現在利用できません。これまで経験したことがありますか? – Apollo

+1

はい。デフォルトでは、apacheユーザは通常、 'nologin'に設定されたシェルを持っているので、su apacheを実行することはできません。ユーザーのシェルを '/ etc/passwd'でshに変更できますが、これはおそらく一般的には悪い考えです。一般的に、あなたがちょうどchownしたい場合は特に、apacheへのsugingは必要ではありません。あなたの場合、 'sudo chown apache:apache〜/ dirIWant /'で十分ですが、あなたのホームディレクトリからディレクトリを移動する方が賢明でしょう。 –

答えて

7

これは、apacheがapacheユーザーとして実行され、/var/www/htmlがAmazon Linux AMIでrootによって所有されているためです。フランクの提案に基づいて所有権/許可を変更するか、userdirsを使用してください。

ウェブサーバーのフォルダをホームディレクトリ(~)から簡単にアクセスできるようにしたいと思うようです。私はEC2でこのようなことをしたいと思って、ユーザーごとのウェブディレクトリmod_userdir)を使用することに決めました。

この機能を使用すると、HTTPサーバーのスペースの一部をユーザーが所有するディレクトリに置くことができます。各ユーザーは、デフォルトで/home/username/public_htmlにある独自のディレクトリを取得します。そのディレクトリにあるページ、スクリプト、その他のファイルは、ドメインに/~usernameを追加してインターネットにアクセスできます。さらに、httpd.conf内のそのフォルダの名前をpublic_htmlからgitRepoのようなものに変更することができます。その場合、index.htmlのファイルが/home/ec2-user/gitRepo/index.htmlにある場合は、http://ec2-hostname.aws.amazon.com/~ec2-user/index.htmlで公開され、ユーザーレベルのファイルを編集するのに便利なec2-userが所有します。

は、Apacheの設定ファイルを開き、 <IfModule mod_userdir.c>が表示されるまでスクロールダウンし nano /etc/httpd/conf/httpd.confを使用して、EC2(使用したいフォルダ名の「gitRepo」を仮定して)でこれを設定するには。その後、次のように見えるように、このセクションを変更:

<IfModule mod_userdir.c> 
    # 
    # UserDir is disabled by default since it can confirm the presence 
    # of a username on the system (depending on home directory 
    # permissions). 
    # 
    UserDir enabled all 

    # 
    # To enable requests to /~user/ to serve the user's public_html 
    # directory, remove the "UserDir disabled" line above, and uncomment 
    # the following line instead: 
    # 
    UserDir gitRepo 

</IfModule> 

その後、あなたが行ってもいいことが、権限が正しく設定されていることを確認する必要があります

chmod 711 /home/ec2-user 
chmod 755 /home/ec2-user/gitRepo 
chown -R ec2-user /home/ec2-user/gitRepo 

そして最後には、このようなWebサーバをリロードします。

sudo service httpd reload 
+0

答えをありがとう。私がFrankFarmerに尋ねると、sudo chown/myDirを実行できるようにユーザーをApacheユーザーに切り替えると、次のような応答が表示されます。このアカウントは現在利用できません。なぜどんなアイデア? – Apollo

+1

さて、あなたは 'sudo chown -R ec2-user/var/www/html'を実行することができますが、あなたの投稿からはあなたが達成しようとしていることが本当にはっきりしないので、 – Dreen

+0

これは私が達成しようとしているものです:var/www/htmlからホーム(〜)フォルダ内のディレクトリへのシンボリックリンクを作成します。私はindex.htmlファイルをホームディレクトリ(〜)に持っています。現在、私のウェブサイトwww.blah.comにアクセスすると、この403エラーが表示されます。私はsudo chown -h apache:apacheを使ってパーミッションを変更しようとしましたが、それは役に立たないようです。他のアイデアはありますか? – Apollo

関連する問題