web-dev-qa-db-ja.com

FTPで作成されたファイルとディレクトリに、Apacheがそれらを読み書きするための正しい権限を与えるにはどうすればよいですか?

私はもっ​​とWindowsの人なので、この基本的なLinuxの質問で私の無知を許してください。

Apache2とvsftpのみがインストールされているLinux(Debian)サーバーの世話をしています。

何が起こっているのかというと、私はファイルやフォルダの所有者と絶えず戦いを繰り広げており、それを正しく理解できないようです。

これはこれまでの私の理解です:

  • www-data/var/www/htmlの下のすべてのファイルは、フォルダーへの書き込みを要求するスクリプトを実行するため、ユーザーはフォルダーとファイルの所有権を必要とします。そしてもちろん、http経由でページを提供できる必要があります。
  • 私のftpユーザー(それをftpuserと呼びましょう)も、新しいファイルをアップロードできるようにする必要があるため、/ var/www/htmlフォルダー(再帰的)に書き込むためのアクセス許可が必要です。

これを念頭に置いて、ftpandwwwというグループを作成し、すべてのフォルダーとファイルをこのグループに追加しました。これはある程度機能しています...

FTPクライアントを使用して作成された新しいフォルダーのアクセス許可が間違っている(FTPクライアントで変更することで修正できます)という事実を除いて、私はほぼ正しい場所にいますが、www-dataはそれらに書き込むことができません彼らはftpuserによって所有されているので、SSHで接続し、ftpandwwwグループにchownを実行して、両方が満足できるようにする必要があります。

FTPで作成したすべての新しいフォルダーに正しいアクセス許可(774)を設定し、ftpandwwwグループが自動的に所有するようにするにはどうすればよいですか?毎回、すべての新しいフォルダとファイルにアクセスして、chownしますか?

8
omega1

Webルートディレクトリで SetGID 権限を使用し、それらを子に伝達します。

ディレクトリにSetGIDを適用すると、そのディレクトリ内のすべての新しいアイテムは、ユーザーのデフォルトのグループメンバーシップに関係なく、親と同じグループで作成されます。

SetGIDをファイルシステムオブジェクトに適用するには、権限コードの前に2を付けてchmodを使用します。
(例:740 => 2740)。

私は多くのSamba共有でSetGIDを使用しているので、ファイルには常に所有者グループUsersがあり、グループのすべてのメンバーがファイルを読み取ることができます(通常、所有者ユーザーのみが書き込むことができるように2750を使用しますファイルに)。

あなたの場合、次のようなものを実行します(XXXを希望の権限に置き換えます):

Sudo chown -R  root:ftpandwww /var/www
Sudo chmod -R 2XXX /var/www 

次に、新しいファイルとフォルダがftpuser:ftpandwwwのような所有権で公開されます。

編集:

ユースケースによっては、SetGIDで問題を解決できる可能性がありますが、グループ権限が正しくないために(ただし所有権は正しい)、一方または他方のユーザーが書き込みを拒否されるという問題が続く場合は、設定するのが最善の策です。 a ファイルを作成するユーザーのカスタムUMASK

ユーザーのUMASKを設定するのが難しい場合(デーモンであるため)、 デーモンユーザーのUMASKの設定 のオプションでこのスレッドを確認してください。

グループメンバーがファイルの書き込みと削除を行えるようにし、所有者以外のユーザーには権限を与えないようにする場合は、マスク007をお勧めします。

10
Frank Thomas