web-dev-qa-db-ja.com

推奨ファイル許可

こんにちは、私はこの問題を解決するために最長の時間を費やしてきました。 WordPressでファイルパーミッションがどのようになるべきかを知りたい 自動更新機能を使用するため 今のところ、私のWordPressインストールは私に私のFTP情報を求め続けています、そして私はアップグレード/インストールのその方法を使いたくない、私は純粋な/直接PHPを使いたいです。

いくつかのコンテキスト:

  • webserverとphp fcgiデーモンはwww-data:www-dataとして動作します
  • ワードプレスのインストールは/home/blaenk/sites/domain.tld/です

最初は、I read すべてのファイル/フォルダは私のユーザーが所有し(blaenk)、私のユーザーが書き込み可能にする必要があります。しかし、何時間もの調査に費やした後、これはうまくいきませんでした、IRCチャンネルの誰かが所有権www-data:www-dataeverythingを設定しようとするように言って、これはうまくいきました。私はもはやFTP情報を要求されず、プラグインのインストールは自動的に機能しました。

しかし、私はもともとサイトファイルを自分のホームディレクトリに置いていましたが、それは自分のユーザーとしてそれらのファイルを作成/作成できるようにしたいからです。 このガイド に書かれているように私もwww-dataディレクトリに自分自身を追加しました。

質問

私はすでにファイルが644、ディレクトリが755であるべきだと知っています。しかし、これは所有権の問題のようです。私は私のワードプレスのインストールのすべてにwww-data:www-dataを設定する必要はありませんので、私はどのファイル/ディレクトリが特にこの所有権レベルを必要とするのか疑問に思いますか?

EDIT :私のユーザーが所有しているすべてのファイルにもかかわらず、私の共有ホスティングワードプレスインストールですべてがうまくいくように見える理由は、私が使用する共有ホストが suexec これはおそらくPHPを私として実行しています。言い換えれば、Webサーバが所有しているファイルareは、いわばいわゆるです。

4

私の質問では、すべてのファイルがユーザーによって所有されているにもかかわらず、すべてが共有ホストでシームレスに機能したのに対し、VPSではすべてのファイルがWebサーバーによって所有されない限り自動アップグレードは機能しません。

私はこれが私の共有ホストが suexec を使用しているためであることを確信しています。だから本質的に、私の共有ホストwere上のファイルは 'Webサーバ'(実際にはCGIデーモン)によって所有されています。

私は実際に私のVPS上でnginxとphp-fpmを実行しているので、私はApacheのsuexecにアクセスすることはできません。しかし、私は自分の理論を試すためにphp-fpmを自分自身で実行するように単純に設定しました。それは実際、私のユーザーが所有するすべてのファイルに対してシームレスに動作しました。私はこれがセキュリティ上のリスクと考えられると確信しています(確かではありません)ので、ユーザーとしてそれを実行しないようにするために私ができることを調べるためにさらに調査します。

1

私が理解している限りでは、特定の権限とは無関係です - 全体的な自動更新 ファイルの所有者とApacheが実行しているユーザーが一致する必要があります そうでない場合は、他のファイルシステム方式(FTP、SSH)にフォールバックし、パスワードの入力を求めます。

資格情報をwp-config.phpの定数で定義できるので、資格情報の入力を求められることはありません。

Codexの WordPressのアップグレード定数 を参照してください。

7
Rarst
  1. SSHアクセスがあると仮定して、最初に "user"を取得します。多くの場合、Webサーバーはwww-dataとして実行されますが、確信がない場合はtopを実行すると、php、nginxなどの "USER"が表示されます。

  2. このステップは明らかですが、あなたのファイルがどこにあるのか見つけてください。通常あなたのファイルは/home/www-data/の下にありますが、私はnginxが今のところ覚えていない他のディレクトリをデフォルトにすることに気づきました。いずれにせよ、あなたのすべてのドメインを保持するディレクトリへのcd

  3. chown -R www-data:www-data example.comこれは、example.comディレクトリ配下のすべてのファイルの所有権を再帰的に変更します。たぶんこれは何も壊れません。

通常、ファイルはすでに正しいパーミッションに設定されていますが、何十もの会社でホスティングした後で偶然sysadminsによってパーミッションが変更されることがあると言うことができますが、それは単なる現実の事実です。たとえば、sshfsでマウントすると所有権が変わる可能性があります。

0
PJ Brunet

あなたの「混在する」経験は、おそらく問題のあなたの2人のユーザが同じグループにいるかいないかに起因する。そしてもちろん、「グループの権利」がどうなっているのか

伝統的にphpでは、phpuser(別名apacheuser、webuser、またはcgideamon)はファイルを変更する権利を持っていません。それはftpuser(別のコーデックス説明では別名「あなたのユーザアカウント」)だけがスクリプトを変更するのを困難にします。

もちろん、どのphpベースのphpファイルの更新も不可能になります。したがって、一般にPHPでは、ファイルの所有権をFTPユーザーからphpuserに変更するのが一般的です。そうする前に、「更新」が「あなたが信任状を与えるにつれて」「FTPシューズ」で行われることは注目に値します。それから、ダウンロードされたzipファイルの解凍は、もちろんスクリプトによる手段で起こるかもしれません…それで、それから、間違いなく触れることができ、さらにphpスクリプトでいっぱいになるwp-contentフォルダがあります。 WPでのその問題について)物事は複雑になる可能性があります。

手短に言うと: WordPress 'Codexは ファイルパーミッションの強化 で可能な限り与えられたファイルパーミッションで'安全 'になるためのかなり良い概説を持っています。 user accountとはFTPアカウントを意味します(cgi deamon/php user/...とも呼ばれません)。

0
Frank Nocke