Webサーバーにルートとしてアップロードされたファイルは、Webアプリケーションから上書きできません。

Webサーバーにルートとしてアップロードされたファイルは、Webアプリケーションから上書きできません。

これが私の問題です。 PHP / MySQLを使用してWebアプリケーションを開発しているときに使用するアカウントを設定するには、いくつかの問題があります。

開発ワークステーション:WinXP SP3、Eclipse PDT

開発サーバー:Debian 6.0、Apache2、MySQL 5、XDebug

LAN経由で接続します。

開発中にテストに必要なコードをサーバーにアップロードします。私はGITとssh:root@myserverを使います。

予想通り、これらのファイルはサーバーのルートによって所有されます。

私のWebアプリケーションはいくつかのファイルを更新する必要があります。サーバーでchmodを実行できるようにするには、ファイルの所有権をwww-dataに変更します。これは素晴らしい作品です。

問題は、ファイルを変更してアップロードするたびにルート所有権に戻り、手動でwww-dataに戻す必要があることです。

ファイルがライブに切り替えられたときにファイルの所有権が正しいことを確認できるので、本番環境ではこれが問題にならないと思います。しかし、開発プロセスは痛いです。

私は何を考えていますか?

1 - rootアカウントを使用してアップロードしないでください。ユーザーwww-dataを使用してsshを介してサーバーに接続しようとします。しかし、パスワードを求めるメッセージが表示され、ちょっと読んだ後にwww-dataユーザーに触れるのは悪い考えであることがわかりました。

2 - 開発目的で別のアカウントを作成し、そのアカウントを使用してファイルをアップロードすることもできます。問題は、サーバーとデータベースに接続するときにこのアカウントを使用するようにWebアプリケーションを構成する方法がわからないことです。

3 - 開発環境でrootとして実行するようにアプリケーションとデータベースを構成できます。これにより問題が解決します。しかし、上記の2番で述べたように、どうすればいいのか分からず、良い考えではないということも知っています。

だから私の問題を解決する方法についてのアドバイスを探しています。上記の3つのオプションのいずれかを選択することもできました(または考慮しなかった4番目のオプションも選択できました)。ありがとうございます。

アップデート - 2011-09-13

以下の応答(cdp1337に感謝)の1つの解決策は、開発サーバーにファイルをアップロードするときにファイル権限を更新するスクリプトを実行することです。私の場合は走ることができます。

chown -R www-data:www-data *

私のウェブサイトのルートディレクトリにあります。注:これは本番環境ではなく、開発Webサーバーは会社外からアクセスできません。これは本番展開のためのソリューションではありません。

別のアイデアがありますか?ありがとうございます。

ベストアンサー1

1/2 - はい、権限のないユーザーにデータをアップロードしたいのですが、怠けば同じことをしている自分を発見します。

3 - IMOは決して良い考えではありません。特に必要ない場合は、アプリケーションをrootとして実行したくありません。

そうでない場合は、あなたの質問に答えるためにアプリケーションを設定するために必要なプロセスを実行する実行可能なビルドスクリプトを生成することをお勧めします。多くの人がこの作業にantを使用していますが、いくつかの「chown」コマンドを含む単純なbashスクリプトで十分です。これにより、データのアップロード時にスクリプトを実行するだけで、スクリプトが正しく構築されたことがわかります。

あるいは、アップデートスクリプトに自動的にgitからアプリケーションの最新バージョンを取得し、権限を実行させることもできます。これは2つのステップを1つに圧縮します。

おすすめ記事