私は Nginx で提供している Web サイトを持っており、最近それに Travis ビルドとデプロイメントを設定しました。
Nginx はユーザーとして Web サイトを実行していますwww-data
。Travis が SSH 経由でサーバーにログインし、Web サイトをデプロイできるようにユーザーを作成しました。デプロイされたファイルは、Web サイトを実行しているユーザー ( )とは異なるユーザーdeploy
を所有者として保存されます。deploy
www-data
この設定で Web サイトを実行すると、権限の問題が発生するのではないかと心配です。Web サイトの実行と展開には同じユーザーwww-data
/を使用する必要がありdeploy
ますか? このアプローチを使用すると、Web サイトを実行しているユーザーが SSH 経由でリモートでログインできるようにすることで問題が発生しますか?
これについて教えてください。
答え1
実際には、ファイルの所有者は Nginx に設定しないでくださいwww-data
。そうすると、Nginx がファイルを変更できてしまうため、ほとんどの場合、これは望ましくありません (自己更新が必要な CMS でない限り)。
したがって、すべてのファイルは が所有する必要がありますdeploy
。
CMS で、いくつかのフォルダーに書き込む必要がある場合、それらの非常に少数の (1 つの?) フォルダーは、確かに が所有する必要がありますwww-data
。デプロイメントで最初のインストールも実行される場合、問題が発生する可能性があります。ユーザーに手動の手順を実行するように提案するか、特別なツールにそのジョブを実行させますが、それが 1 回限りのことであれば、手動で実行するだけで十分簡単です (特に、そのようなフォルダーは 1 つだけなので、そうですよね?)。CMS は、そのような問題があるかどうかを通知し、ページの提供を停止することもできます。そうすれば、すぐにわかるため、ファイルのアップロードや同様のアクションを試みたときに問題が発生するのを回避できます。
もちろん、ファイルは が所有しているわけではありませんwww-data
が、 が読み取り可能である必要がありますwww-data
。したがって、ファイルを他のユーザーが読み取り可能にするか ( )、グループを( )-rw-r--r--
に設定することを検討してください。ほとんどの場合、グループを使用するリスクを冒さない人もいます。その方が安全だからという理由で、他のユーザーがファイルにアクセスできるようにするだけです。www-data
-rw-r-----
もちろん、これは Nginx がdeploy
ユーザーとグループにアクセス権限を持たないことも意味します。