私は過去1年間にLinuxオペレーティングシステムについて学びましたが、まださまざまな構成で権限がどのように変更されるかについて非常に混乱しています。ローカル開発環境を設定しようとしていますが、本番のVPS(CentOS)では、ファイル/ディレクトリ権限がローカル設定(Mint)とは異なる動作をしていることがわかりました。
リモートサーバーファイル構造は所有者とグループに対して設定され、myuser:myuser
rwx権限はディレクトリに対して755、ファイルに対して644に設定され、サイトの要件を満たす必要があります。ただし、www-data:www-data
ローカルで機能するには、一部のフォルダの所有権と権限を777に変更する必要がありました。 myuserをApacheグループに追加しましたが、問題は解決しません。
これにより、私のローカルシェルユーザーはローカルApacheユーザーとは異なりますが、リモートシステムではシェルとApacheユーザーが同じであると信じています。これは正しいですか?
これらの設定を変更すると、セキュリティへの影響が心配されます。 Webサーバーに書き込み権限を与えてはいけないという記事を読みました。ただし、drupalでは「files」というファイルストアディレクトリに配置する必要があります。myuser:myuser
これは、リモートシステムファイルがApacheユーザーであってもリモートシステムファイルが所有されているにもかかわらず、Webサーバーにまだ書き込みアクセス権があることを意味しますか?
それでは、これらのユーザーを設定する方法はどのように決定されますか?私はApacheが実行されているユーザーやグループを変更すると仮定していますが、これを行う方法とベストプラクティスを説明できる人はいますか?ローカルとリモートに同じルールが適用されますか?
答え1
基本的に2つの異なる質問をしています。
本番システムをミラーリングするためにローカルシステムの権限を設定するには?
サーバー構成を知る必要があります。この場合、
httpd
httpデーモン(この場合はApacheとも呼ばれます)の設定が含まれます。通常、または/etc/httpd
にあります/etc/apache
。また、デーモンがどの資格情報で実行されているかを知る必要があります。その後、同じ方法でローカル権限を設定できます。効果的に同様に(つまり、ユーザー/グループ名は異なりますが、デーモンがファイルを要求したときのアクセス権は同じです)HTTPデーモンへの書き込みアクセスは正常ですか?
頼る。通常、デーモンを少なく書くほど良いです。一方、ほとんどの場合(静的/読み取り専用コンテンツを提供しない限り)は実現できません。この場合、システムを強化する方法はいくつかあります。
ドキュメントルートへの読み取りアクセス権のみを持ち、必要な場合にのみ書き込みアクセス権を持つ特別なユーザーとしてデーモンを実行します(拡張ACLユーティリティ
getfacl
/はsetfacl
あなたの友達です)。 Linuxでは、他のセキュリティモデル(GRSecurity / SELinux / AppArmor / ...)を使用することもできます。正しく作成されたデータ処理 - 偽の入力を合理的に処理します。この場合「理由」方法「何も書かないで」。
「プロキシ」による書き込みアクセス - 実行部分を含める(モデルよく使われるMVCパターンセキュリティは別のプロセスで損なわれません(ただし、利点を得るために正しく実装する必要があります)。