Apacheを現在のユーザーとして実行する方法


44

開発マシンでは、現在のユーザーとしてApacheを実行してアクセス許可の問題を簡素化する方が便利ですか?それ、どうやったら出来るの?そのsuexecと思いますが、Ubuntu + Apacheでどのように設定すればよいですか?

回答:


28

私自身は、ユーザーをwww-dataグループに追加します...

sudo adduser {username} www-data

シンプルで効果的。設定ファイルや権限をいじることはありません。


6
私は常にそれをしましたが、グループの権利はすべてのファイルに対するユーザーの権利と同じではないため、これは許可が拒否された問題の一部を解決しません。
コスタノス

1
CHMODがグループに書き込みを許可しなかった場合、これは修正されません。
GusDeCooL

私にとっての問題は、ローカルにインストールしていることです。IDEでファイルを作成すると、「ユーザー/グループ」が作成され、Apacheがそれらのファイルを読み取れないことがあります
Postadelmaga 14

通常、プライマリグループはwww-dataではなく、一部のphpアプリはグループの書き込み権限を必要とするため、これだけでは多くの権限の問題は解決しません。(joomla、ワードプレス)
エリックエリック

2
これは、メイングループがwww-dataではないため、ファイルを作成し、www-dataがそれらを削除/編集できないという問題を解決しません
billy

56

次のファイルをルートとして編集します。/ etc / apache2 / envvars

コマンドを使用して:

sudo nano /etc/apache2/envvars

ユーザーが1人だけの場合は、ユーザーとグループを自分自身に変更し、アクセス許可の問題が再び発生しないようにします。

IE、ユーザー 'big_dog'としてのみログインしてサーバーを実行している場合:

export APACHE_RUN_USER=big_dog
export APACHE_RUN_GROUP=big_dog

ヘック、その問題については、そのユーザーを現在のユーザーに変更することができます。次に、user_dirをインストールします。すべてのWebを所有しているだけで、完全に制御できます(これを変更しない限り)。

サーバーを再起動し(不明な場合は、再起動するかgooleするだけ)、すぐに使用できます。


3
これは魅力的です!ありがとうございました。私が追加する唯一のもの:sudo chown big_dog.big_dog /var/lock/apache2
コスタノス

3
またおそらく必要になるでしょうsudo chown big_dog.big_dog -R /var/log/apache2
コスタノス

OpenSUSE-Tumbleweed(およびおそらく他の一部)では、ファイルは/etc/apache2/uid.conf
Dilawar

必ずしもenvvarsファイルを変更する必要はありません。スクリプトでApacheを起動する前に、環境変数を更新しただけです。この方法では、単一のユーザーにロックされることはありませんが、スクリプトを実行するユーザーはapacheを実行します。以前はスクリプトでexport APACHE_RUN_USER=#$(id -u)ユーザーIDを指定し、同様id -gにグループで使用し、最後に実行するためにapacheを呼び出しました。
inblueswithu

1

なぜあなたはこれを行うのですか、私は過去にそのパーマの問題に苦労していましたが、これは今日からの私の開発プロセスです:

  • 新しいLinuxボックス(仮想、またはラップトップのようなローカル)をインストールします
  • 標準sudo apt-get install lamp-server^プロシージャを実行してランプを点灯します
  • プロジェクトが次のようなホームディレクトリにsymリンクを作成します。

    ln -s /home/user/html /var/www/html

  • ホスト設定ファイルへのsymリンクを作成します

    ln -s /home/user/html/Apache-VirtualHosts.conf /etc/apache/sites-enabled/000-default

それでおしまい :)

それはアスペクトとして機能し、ユーザーのパーマやapacheサーバーと同様の問題はありません。mysqlのプロセスはもう少しです。

乾杯


それは、他のほとんどの答えで対処された許可の問題のいずれにも対処していません。
HörmannHH

0

「これを行うべきです」という問題を回避して、次のコマンドを実行することで、Apacheのユーザーが設定されている場所を見つけることができます。

grep www- /etc/apache2/apache2.conf

次に、これらのインスタンスを編集し/etc/apache2/apache2.conf、Apache(sudo /etc/init.d/apache2 reload)をリロードします。


apache2.confwww-私のために含まれていない
ジウメング

私はあなたのようなものを意味していると感じていますgrep -HR "www-" /etc/apache2/。すでにapache2.confにあることがわかっている場合は、そのファイルを編集します。私の場合、それはそこにありませんでしたが、エリックの答えが指摘するように/ etc / apache2 / envvarsにあります。
マイク14年

apache.confためルックス${APACHE_RUN_USER}${APACHE_RUN_GROUP}www-data直接ではありません。
ヤヒヤウディン

0

新しいユーザーグループwebdevを作成し、それにwww-dataユーザーを追加します。

sudo addgroup webdev
sudo adduser www-data webdev

次に、そのグループにユーザーを追加し、yorユーザーのデフォルトグループにします。

sudo adduser {your-user} webdev
sudo addgroup webdev

最後に行うことは、グループwebdevがファイルに対するrwx権限を持っていることを確認することです

sudo chmod 775 -R /path/to/project

発生する可能性があるのは、たとえばwww-dataが新しいログファイルを作成し、rwxできないことです。


1
www-data特に開発環境について話しているので、自分のユーザーをグループに追加するだけでなく、これの利点は何ですか?
ダン

このようにして、775の権限をpublic_htmlまたは/ var / wwwなどに設定すると、開発マシンの権限に問題は生じません。他のアプローチは、追加の手順を行うか、私がそれらを望まないほど効果的ではありません。だから私の意見では、これは開発マシンでそれを扱う最良の方法です。生産的なサーバーの場合は、別のセットアップをお勧めします。このアプローチでも、ユーザーを簡単に追加できます。
トーマスベントゥリーニ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.