自動生成されたファイルのユーザーとグループが正しく設定されていません。

自動生成されたファイルのユーザーとグループが正しく設定されていません。

私は開発コンピュータでMagento 2(オンラインストアソフトウェア)プロジェクトをホストしています。

ユーザーとグループの設定は次のとおりです。

user -> company
group -> www-data

Magento 2では、一部のファイルが実行時に(たとえば、サイトを再ロードするときなど)、自動的に作成されます。ただし、自動生成されたファイルの権限は次のとおりです。

company@server:/srv/www/vhosts/company_m2/generated/code$ ls -lah
total 64K
drwxrwxr-x  16 company  www-data 4,0K Mär  3 14:28 .
drwxrwxr-x   4 company  www-data 4,0K Mär  3 13:50 ..
drwxrwxr-x   3 www-data www-data 4,0K Mär  3 14:27 ADM
drwxrwxr-x   8 www-data www-data 4,0K Mär  3 14:28 Amasty
drwxrwxr-x   4 www-data www-data 4,0K Mär  3 14:27 Amazon
drwxrwxr-x   3 black   sudo     4,0K Mär  3 14:28 Composer
drwxrwxr-x   3 www-data www-data 4,0K Mär  3 14:27 Dotdigitalgroup
drwxrwxr-x   3 black   sudo     4,0K Mär  3 14:28 EthanYehuda
drwxrwxr-x   3 www-data www-data 4,0K Mär  3 14:27 Ho
drwxrwxr-x 107 www-data www-data 4,0K Mär  3 14:28 Magento
drwxrwxr-x   5 black   sudo     4,0K Mär  3 14:28 Migration
drwxrwxr-x   3 black   sudo     4,0K Mär  3 14:28 PayPal
drwxrwxr-x   3 www-data www-data 4,0K Mär  3 14:27 Psr
drwxrwxr-x   3 black   sudo     4,0K Mär  3 14:28 Symfony
drwxrwxr-x   3 www-data www-data 4,0K Mär  3 14:27 Vertex

ご覧のとおり、3つのユーザー:グループの組み合わせがあります。

company  www-data
www-data www-data
black   sudo

常にその組み合わせを使用するようにどのように変更できますかcompany www-data


修正する:

上書きしてApacheユーザーをcompanyinに変更しました。/etc/apache2/envvars

export APACHE_RUN_USER=company

見たいここ

また、@unxnutの提案に従って親フォルダの権限をdrwxrwsr-xwithに設定しましたchmod 2775

新しいファイルを作成すると、次のようになります。

drwxrwsr-x  18 company www-data 4,0K Mär  3 18:50 .
drwxrwxr-x   4 company www-data 4,0K Mär  3 18:30 ..
drwxrwsr-x   3 company www-data 4,0K Mär  3 18:50 ADM
drwxrwsr-x   3 company www-data 4,0K Mär  3 18:50 Aheadworks
drwxrwsr-x  13 black   www-data 4,0K Mär  3 18:50 Amasty
drwxrwsr-x   4 black   www-data 4,0K Mär  3 18:50 Amazon
drwxrwsr-x   3 black   www-data 4,0K Mär  3 18:50 Composer
drwxrwsr-x   4 black   www-data 4,0K Mär  3 18:50 Dotdigitalgroup
drwxrwsr-x   3 black   www-data 4,0K Mär  3 18:50 EthanYehuda
drwxrwsr-x   3 company www-data 4,0K Mär  3 18:50 Ho
drwxrwsr-x   3 company www-data 4,0K Mär  3 18:50 Klarna
drwxrwsr-x 118 black   www-data 4,0K Mär  3 18:50 Magento
drwxrwsr-x   5 black   www-data 4,0K Mär  3 18:50 Migration
drwxrwsr-x   3 black   www-data 4,0K Mär  3 18:50 PayPal
drwxrwsr-x   3 black   www-data 4,0K Mär  3 18:50 Psr
drwxrwsr-x   3 black   www-data 4,0K Mär  3 18:50 Symfony
drwxrwsr-x   3 company www-data 4,0K Mär  3 18:50 Vertex

ただし、ユーザーはまだフォルダ数が少なくなっていblackますcompany

私はこれらすべてが不要であると感じます。より大きな根本原因があるでしょう。 sgid または suid ビットがまったく設定されたフォルダを持たないラックスピードでホストされている別のサーバーがあり、それは魅力的に動作します。

答え1

ユーザーが新しいファイルまたはディレクトリを作成すると、通常はそのユーザーが所有します。一般ユーザーの場合は変更できません。ファイル所有者root(またはアクセス権を持つユーザー)はCAP_CHOWNファイル所有者を変更できますが、プログラムは所有者を変更するために明示的にシステムコールを実行する必要があります。通常、ファイルを一括バックアップ/復元するように設計されたプログラムのみがこれを実行できます。

一般ユーザーが読み取り専用アクセス権のみを持つファイルを含むディレクトリに対する書き込みアクセス権を持っている場合は、問題のファイルのコピーを作成して元のファイルを削除して、問題のファイルの所有権を効果的にインポートできます。ファイル名を元の名前に変更します。

新しいファイル/ディレクトリがユーザー所有で誤って作成された場合は、そのファイル/ディレクトリを作成したblackプロセスがそのユーザーとして実行されていることを意味できます。black一部のプロセスが誤って user ではなく user で始まった場合や、companyそのユーザーにクローン操作またはファイルを作成/操作するその他の自動化されたプロセスがある場合があります。

これは、標準化されたサービス開始プロセスを使用するとエラーを最小限に抑えることができる状況の1つです。 Webサーバープロセスを直接起動するなどの操作に慣れている場合は、誤ってユーザーを誤ってapachectl start実行するのが簡単であるため、エラーを修正した後に誤った権限を削除する必要があります。ただし、サーバープロセスを実行する必要があるユーザーを明示的に定義するsystemdなどを使用するか、起動スクリプトを使用して.serviceサービスを開始する前に正しいユーザーとして実行されていることを確認し、常に標準ツールを使用してサービスを停止して開始します。場合、そのような間違いは避けられます。

関連情報