web-dev-qa-db-ja.com

サーバー管理者から、ディレクトリにパブリック書き込み権限を設定するように求められました

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

私は主に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を使用する必要をなくすために何ができますか?私は自分のサイト/サービス上のフォルダが公に書き込み可能であるという考えが本当に好きではありません。

私はウェブサーバーについてほとんど知らないので、あなたのアドバイスをいただければ幸いです。

9
Alex Coplan

分解してみましょう

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

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」など)を使用すると、これをさらにトラブルシューティングできます。ただし、実行アクセス許可をパブリックに付与するだけでよい場合に限ります(または「その他」)、セキュリティの観点からは問題ないはずです。

13
Rilindo
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権限を設定して機能させるだけで、彼が何をしているかを少し理解していないことは確かです。

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

18
Sven