サーバー管理者から、ディレクトリへの公開書き込み権限の設定を求められています


9

私はウェブ開発に比較的慣れていないので、しばらくお待ちください。

私は主にiPhone開発者ですが、最近、共有ホスティングを使用している誰かのためにサイトを作成しました。許可について考える必要なく、そのサイトのPHPでファイルに問題なく書き込むことができました。

作成中の新しいアプリにWebサービスをデプロイしているところですが、実際にはスムーズに進んでいません。ここでの最も重要な違いは、私は他の誰かのサーバーを使用していて、FTP / DBアクセスだけを持っていることです。

基本的に、私は次のように私のCMSを構成するPHPファイルのロードを持っています:

mysite.com/admin/manage_news.php
mysite.com/admin/manage_events.php

これらのスクリプトは、データベースまたはファイルを編集します。彼らはDBとうまく相互作用できますが、私のスクリプトはファイルシステムに書き込むことができません。たとえば、次のファイルに書き込もうとする可能性があります。

mysite.com/data/img/event_1.png
mysite.com/data/somefile.txt

これは私のMAMPインストール(ローカル)で正常に動作しましたが、サーバーにデプロイすると、PHPは書き込みが試行されるたびにエラーを吐き出しました...次のようなもの:

ファイル "../data/img/someimage.png"を書き込み用に開くことができませんでした。

サーバーを実行している人にメールを送ったところ、彼は戻ってきて言った:

公衆の許可を得て動作しますか?(777)

そして、それはしました-しかし、私は公共の許可を使用することに非常に慎重だったので、すぐにそれを再び無効にしました。私は彼にメールを送り、「標準のユーザー権限を使用してPHPスクリプトを作成するにはどうすればよいですか」と言った。

公開のままにしてください。

私はそれがドメイン解決のどこかでIP競合であると考えていますが、私はそれについて心配していません。

それから私は彼に「確かにこれは安全ではない」またはそれらの線に沿った何かを言って電子メールを送りました、そして彼は次のように答えました:

現実には、私が管理しているさまざまなフォルダに777があるいくつかのWebサイトを含め、何百万ものWebサイトがあり、それは単なる生き方です。

誰かが私に彼に与えることができる解決策のアイデアを教えてもらえますか?または、777を使用する必要がないようにするにはどうすればよいですか?私のサイトやサービスのフォルダーを一般公開して書き込みたいとは思いません。

私はウェブサーバーについてほとんど知らないので、あなたの助言にとても感謝します。


12
この男から逃げて、振り返ってはいけません。
user9517

実際にはオプションではありません... SvenWの回答のコメントを参照してください...
Alex Coplan

回答:


13

分解してみましょう

ディレクトリで読み取り、実行、書​​き込みを行うには、スクリプトを実行するユーザーが必要なので、次のようにする必要があります。

7 =(r)ead、(w)rite、e(x)ecute

同じグループに属する他のユーザーは、ディレクトリ内のphpファイルを実行できる必要がありますが、(明らかな理由により)それに書き込むことはできません。必ずしもPHPファイルを読み取る必要はありません。したがって、実行権限のみを提供する必要があります。

1 = e(x)ecute

一般の人も同じです。実際、phpと静的ファイルを表示する必要がある外部ユーザーに必要なのはこれだけです。

1 = e(x)ecute

したがって、最低限必要なのは次のとおりです。

711

上記の設定を自分の設定で確認したので、うまくいくはずです。ただし、これはデフォルトのWebユーザーの下にあります。www以外のログインでアップロードする場合、ファイルとディレクトリはおそらく別のユーザーの下にあります。その場合、デフォルトのWebユーザーは、自分が所有しているファイルを読み書きできない可能性があります。その時点で、おそらくデフォルトのWebユーザーをグループに追加し(sysadminがそれを行う必要があります)、次にグループに属するユーザーに読み取り、書き込み、実行のアクセス許可を与える必要があります。

771

そして、それはおそらくうまくいくでしょう。それか、またはsysadminにこれらのファイルのユーザーとグループの所有権をデフォルトのWebサーバーユーザーに変更してもらいます(ただし、権限は変更しません!)。それでも機能しない場合は、アクセス許可のサンプル出力(「ディレクトリ内のls -la」のようなもの)を使用すると、これをさらにトラブルシューティングするのに役立ちます。または「その他」)、セキュリティの観点からは問題ありません。


2
2回賛成できることを望みます。
ウェズリー、

問題は、Webサイトがアクセス許可自体ではなく、独自の構造内のファイルに書き込むべきではないことです。
JamesRyan

あなたが正しい。データによっては、パブリックウェブルートの外部にあるファイルに書き込むことをお勧めします。
Rilindo

ここで私は/dataフォルダーに書き込んでいます-このフォルダーには、JSON Webサービスを構成するPHPスクリプトと、Webサービス(/data/imgフォルダー内)に渡されるコンテンツに使用される一連の画像が含まれます
Alex Coplan

では、画像は公開する必要がありますか?それは事を明らかにしました。
Rilindo

18
Leave it as public, it'll be fine

I reckon it's an ip conflict somewhere in the domain resolution, 
but I'm not worried about it.

この男はばかであり、これは完全にナンセンスです。アクセス権は、IPアドレスやドメイン解決とは何の関係もありません。

この「管理者」の質を考えると、サイトの管理が不十分で安全でない可能性が高いため、他の場所でホストすることをお勧めします。777それが機能するように何かに許可を与えるだけでは、彼が自分のやっていることを少し理解していないことを確信しています。

実際に必要なアクセス権は、システムの使用方法と構成方法によって異なります。これを知らずに何かを伝えるのは難しいです。


おかげで-私の考えは正確にアクセス許可についてです-私が開発している会社はそれを払わないので、私は実際に他の場所でホストするオプションがありません。無料でそれをしなさい-私が言うことができることから、私は彼の仮想サーバーの1つを実行しているだけです。では、通常はどのように機能し、PHPスクリプトを「ユーザー」として実行して、サイト上のあらゆるものに書き込むことができるのでしょうか。
Alex Coplan 2011

まあ、私は彼らが「無料で」何を得るかについて彼らに知らせます。共有ホスティングについてはあまり経験がないので、コメントはできません。私のサイトは、すべての書き込み可能にする必要がによって所有されることをDebianウェブサーバやフォルダを実行するwww-data700権限が、これはおそらくあなたのケースで仕事に行くされていません。
スヴェン

私は彼らがメインサイトにも彼に支払っていると思うので、それが理由です-それがサーバーエラーページの下部にある助けであるなら、それはこう言いますApache/2.2.9 (Debian) PHP/5.2.6-1
Alex Coplan

また、これは共有されていないvpsです
Alex Coplan

2
さて、私はあなたのファイルがサーバーに転送される可能性のある権限と所有権を把握しようとします。www-dataグループのメンバーではないユーザーの場合は、転送後にユーザーまたはグループを変更するか、実際に使用777権限を付与する必要があります。しかし、これは無意味です。私たちはこのようにあなたを助けることはできません。
スヴェン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.