Webサーバーがあり、FTPクライアントを使用してファイルをアップロードしています。そのため、ファイルの所有者とグループは、アップロード中に使用されたユーザーから取得されます。
次に、このファイルをWebサーバー(Apache/apache)から書き込み可能にする必要があります。
1つの方法は、アップロードしたファイルの所有者とグループをApache/apacheに変更することですが、FTPアカウントを使用してファイルを変更することはできません。別の方法は、ファイルに777のアクセス許可を与えることです。
どちらのアプローチも、あまり専門的ではなく、少し危険なようです。他のオプションはありますか? Windowsでは、別のユーザーをファイルに追加するだけです。 Linuxでも同様のことができますか?
ファイルのグループを変更できます。
groupadd webusers
usermod -aG webusers the_user_name
chgrp -R webusers the_directory
chmod g+s the_directory
これがRedHatベースのディストリビューションの場合は、setfaclを使用してグループなしでこれを実行し、デフォルトで発生するように設定できます。
setfacl -R -m user:the_username:rwx directory_name
setfacl -d -R -m user:the_username:rwx directory_name
ユーザーのグループが一連のファイルを維持できるようにすることは、1つです。それらを共通グループに追加し、既存のファイルとディレクトリの所有権をそのグループに設定し、次に、すべてのディレクトリ(その後、ファイル)にスティッキグループビットを設定します。デフォルトでは、グループによる書き込み可能として追加する必要があります)。
次に、このファイルをWebサーバーから書き込み可能にする必要があります
コードインジェクションの問題を回避するには、ウェブサーバーで書き込み可能にするファイルについて非常に注意深く選択する必要があります。上記で定義したユーザーグループにウェブサーバーuidを追加しないでください。これらのファイルをウェブサイトの他のコンテンツと完全に分離してください(つまり、すべてのcgi/phpなどが無効になっている別のディレクトリ)、できればドキュメントルートの完全に外側にあります。ほとんどのFTPサーバーでは、アップロード許可(ファイルの場合は0666、ディレクトリの場合は0777)を設定したり、ディレクトリに他のスティッキービットを設定したりできます。
C.
setfaclを機能させるには、パーティションを「acl」オプションでマウントする必要があります