これが私の問題です。 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つに圧縮します。
答え2
ファイルをrootとしてアップロードしてはいけません。可能ルートとしてファイルをアップロードします。このシステムの管理者ですか?
ユーザーwww-dataを使用してsshを介してサーバーに接続しようとします。しかし、パスワードを尋ねます。
管理者に責任を問わないことを願っています。サーバー担当者に行き、合理的なセキュリティモデルを用意してください。これらすべてがどのように機能するかを知る必要があることがたくさんあります。ここで提供できる答えをはるかに超えています。
ただし、ファイルのアップロードに使用する一般ユーザーアカウントとhttpサーバーユーザーを含むグループを作成できます。このグループは、両方のユーザーのデフォルトグループにしてはいけません。その後、apache uidが書き込みアクセス権を持っている必要があるすべてのディレクトリ(ドキュメントルートの外側の非常に短いリストである必要があります)に対してグループを公開に変更し、公開グループがコンテンツを読み取ることができるように設定し、そのディレクトリにあります。
WebサーバーUIDで読み取ることができるアップロードするファイル/ディレクトリの場合は、「その他」権限を使用して読み取りアクセスを有効にし、ディレクトリへのアクセスを実行します。
このボックスを管理すると、あなたの責任が何であるかを理解し始めるのに時間がかかります。良い本が多いですよー——根良いスタートです。