Webサーバーの作成に使用できるApacheグループをどのように確認できますか?

Webサーバーの作成に使用できるApacheグループをどのように確認できますか?

WordPressを動作させようとしています。現在、次のエラーメッセージが表示されます。

Could not create directory. /var/www/html/wp-content/upgrade/theme_name

テーマをアップロードしようとしたとき。権限設定です/var/www/html/wp-content/upgrade/

drwxrwxr-x 3 ec2-user apache 4096 Jun 21 00:30 upgrade

chmod 777 upgradeエラーを取り除いてください。しかし、これはベストプラクティスとは見なされません。しかし、私の考えにはこれも効果があるようですが…なぜできないのでしょうか?

おそらく上記の権限にWebサーバーが含まれていないと推測されます。 Webサーバーで書き込みを許可するにはどのグループを使用する必要がありますか?

(私の設定はAmazon EC2、Amazon Linux AMI(httpdを含む)です)

答え1

私はAmazon EC2について何も知りませんが、次のことができるはずです。

  1. 次のようなコマンドを使用して、Apacheを実行しているユーザーの名前を取得します。

    ps aux | grep apache # The username should be in the first column.
    
  2. このユーザーが属するグループを検索するには、次のコマンドを使用しますgroups(1)

    groups [USERNAME]
    

答え2

次のコマンドラインメソッドを使用してApacheグループ名を見つけることができます。

WWW_GROUP=`ps axo user,group,comm | egrep '(apache|httpd)' | grep -v ^root | cut -d\  -f 2| uniq`
echo Apache group is: $WWW_GROUP

ユーザーを取得するには、以下を確認してください。コマンドラインでApacheユーザーを確認する方法は?

答え3

chmod 777のアップグレードでエラーが消えました。

さて、この場合、作成者の資格情報を公開する必要があり、ls -ld /var/www/html/wp-content/upgrade/theme_nameそれを使用して正確なアクセス権を付与できます。

1777(as)を使用する方が良いです/tmp。これは、少なくともファイル所有者だけがリンクを解除できることを保証するからです。

答え4

パッドがテストやサブシェルなどを満たす場合は、次のことがうまく機能します。

ps -ef | egrep '(httpd|apache2|apache)' | grep -v "$(whoami)" | grep -v root | head -n1 | awk '{print $1}' | groups | awk '{print $2}'

上記の最後のコマンドは、2番目のグループを選択します。なぜなら、最初のグループは一般的にsys役に立たないからです。

リストが必要な場合みんなawk '{print $2}Apacheグループで、以下のように最後のパイプラインセクションを削除します。

ps -ef | egrep '(httpd|apache2|apache)' | grep -v "$(whoami)" | grep -v root | head -n1 | awk '{print $1}' | groups

Apacheのユーザー名が必要な場合は、前の手順を実行し、groups次のようにパイプライン部分を削除します。

ps -ef | egrep '(httpd|apache2|apache)' | grep -v "$(whoami)" | grep -v root | head -n1 | awk '{print $1}'

私は、状況が完全に自分のコントロールの範囲内にない限り、状況を想定することをお勧めしません。プログラムでユーザーを決定する必要があり、特定の環境で常に実行されるかどうかわからない場合(または誰かがapache.confからカスタム名/グループに変更したかどうかわからない場合)、実用的です。確認する方法。.envローカライザへのアクセスのためにファイルのいくつかの共通キーの下に入力したり、交互にエコーしたり、bash_profileシステムbashrc全体を確認したりするための一貫した変数が必要な場合は、次のようにします。

echo export "WEBSERVER_USERNAME=$(ps -ef | egrep '(httpd|apache2|apache)' | grep -v "$(whoami)" | grep -v root | head -n1 | awk '{print $1}')" >> ~/.bash_profile
echo export "WEBSERVER_USERGROUP=$(ps -ef | egrep '(httpd|apache2|apache)' | grep -v "$(whoami)" | grep -v root | head -n1 | awk '{print $1}' | groups | awk '{print $2}')" >> ~/.bash_profile
source ~/.bash_profile

他の場所:...

# chown a dir to the webserver universally
# for typical 755 directory permission
# Good for production environment web app folders
sudo chown "${WEBSERVER_USERNAME}:${WEBSERVER_USERGROUP}" /path/to/dir

# chown to your user and the webserver usergroup
# for shared 775 cli/http directory perms
# good for dev environment, localhost, or anywhere that
# you have to do a lot of cli file edits to web folders/files
sudo chown "$(whoami):${WEBSERVER_USERGROUP} /path/to/dir

あるいは、百万回を探す必要なしに必要なものが何でも可能です。

関連情報