私はもっとWindowsの人なので、この基本的なLinuxの質問で私の無知を許してください。
Apache2とvsftpのみがインストールされているLinux(Debian)サーバーの世話をしています。
何が起こっているのかというと、私はファイルやフォルダの所有者と絶えず戦いを繰り広げており、それを正しく理解できないようです。
これはこれまでの私の理解です:
これを念頭に置いて、ftpandwwwというグループを作成し、すべてのフォルダーとファイルをこのグループに追加しました。これはある程度機能しています...
FTPクライアントを使用して作成された新しいフォルダーのアクセス許可が間違っている(FTPクライアントで変更することで修正できます)という事実を除いて、私はほぼ正しい場所にいますが、www-dataはそれらに書き込むことができません彼らはftpuserによって所有されているので、SSHで接続し、ftpandwwwグループにchownを実行して、両方が満足できるようにする必要があります。
FTPで作成したすべての新しいフォルダーに正しいアクセス許可(774)を設定し、ftpandwwwグループが自動的に所有するようにするにはどうすればよいですか?毎回、すべての新しいフォルダとファイルにアクセスして、chownしますか?
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
をお勧めします。