web-dev-qa-db-ja.com

スーパーユーザー/管理者の代わりに、ファイルとフォルダーwww-dataを新しく作成する所有者を作成します。

私はこれまで権限に苦労しており、別の質問を投稿しましたが、まだそれを修正する方法はなく、問題が何であるかを特定しました。

私のセットアップ:

  • LAMPスタックを備えたUbuntuデスクトップ
  • 5「ユーザー」Sudo useradd -r -s /bin/false USERNAMEを使用してubuntuサーバーで作成したユーザーを作成し、ローカルネットワーク共有フォルダーへのアクセスに使用します。つまり、ネットワーク上のコンピューターが/ var/wwwフォルダーに接続する場合、 Sambaを使用して共有。
  • 編集:目的は、ローカルネットワーク内のすべてのコンピューターが同じウェブサイトでローカルに動作できる「マスターローカルホスト」のようなものを作成することです(静的IPアドレスを持っていないため、他の場所からサーバーにアクセスできません) 。

私の問題:

現在、ネットワークのコンピューターを使用して/var/www/htmlに新しいフォルダーを作成すると(例:フォルダー/ var/www/html/testsite1を作成)、このフォルダーはboris:www-data( "boris"によって自動的に所有されます私のubuntuデスクトップインストールのメイン管理ユーザーであり、新しく作成されたフォルダでls -lを実行すると実際にboris:www-dataが表示されます)、現在のセットアップで問題を引き起こしています(Dupplicator Plugin for wordpress LifeInTheGridによるほとんど)。ただし、私の/var/www/var/www/htmlは両方ともwww-data:www-dataによって所有されています

したがって、私はどのようにできるのか知りたいです:

  • / var/wwwおよび/ var/www/htmlの下のすべてのファイルおよびディレクトリの所有権をwww-data:www-dataに変更します

  • ネットワークのユーザーのいずれかで作成する任意のファイルまたはフォルダーは、www-data:www-dataによって自動的に所有されます(これには、phpスクリプトによって自動的に作成されたファイルが含まれますDuplicatorプラグインは、私が間違っていない場合に行います)。

それを行う方法はありますか?

注:私はLinuxとコマンドラインに関連することを非常に初心者ですが、すぐに追いつきます。

注2:umaskはすでに0002に設定されています

編集:

これを試しました:

Sudo chown -R www-data:www-data /var/www/

次に、これを実行してsetuidおよびsetgidビットを設定します。

Sudo chmod u+s /var/www/html
Sudo chmod g+s /var/www/html

次にログオフし、Apacheを再起動し、ネットワークIP(静的ではなくローカルIP)を介してサーバーに接続されたMacを使用して新しいフォルダーを作成しようとしました。

走った

ls -l on /var/www/html

出力はまだです:

drwxr-sr-x 2 boris   www-data  testsite1

注意:

以前にApacheの設定とenvvarsを確認しましたが、すでに次のように設定されています:

export Apache_RUN_USER=www-data
export Apache_RUN_GROUP=www-data

編集:私はそれを逆向きに試しました。たとえば、すべてをboris:www-dataが所有するように設定し、envvars Apache configをboris:www-dataに設定しました。動いた!

ここに私がやったことがあります:

Envvarsを変更しました

export Apache_RUN_USER=boris
export Apache_RUN_GROUP=www-data

Sudo chown -R boris:www-data /var/www/

Apachemを再起動し、新しいフォルダーを作成し、ファイルを追加し、プラグインを実行しました。

12
Boris Chevreau

質問#1への回答:再帰chown

再帰的なchownを使用すると、所有権とグループを/var/www/...に必要なものに設定できます。これは、使用する必要があるコマンドです。

Sudo chown -R www-data:www-data /var/www/

これにより、すべてのファイルとフォルダは、それらの所有権のアクセス許可で内部に設定されます。


質問2への半回答:setgid bit

ファイルのデフォルトのグループ所有権が必要な場合は、/var/www/htmlフォルダーにsetgidビットを設定します。その後、フォルダに記載されているように、そのグループで新しいファイルを作成する必要があります。

Sudo chmod g+s /var/www/html

ただし、www-data以外のユーザーがディレクトリに書き込みを行う場合、書き込み権限を設定する必要があります。そうしないと、注意しないとセキュリティホールが1つまたは2つ開く可能性があります。

許可は$USER:www-dataになります;所有者を変更するには、方法#1に示されているようにchownを使用します(適切なセットアップでは、Webファイルへのアクセスについては、ユーザー所有者の許可ではなくグループの許可に依存する必要があります)。


PHP Wordpress Duplicator Problem

パーミッションの問題は、ユーザー/グループPHPが必要に応じて実行され、ディレクトリ上で+xが必要に応じて実行され、ディレクトリ構造などを編集することです。

PHPは、デフォルト設定を使用するUbuntuインストールでデフォルトでwww-dataとして実行されます。 DuplicateatorプラグインがPHPプラグインであることにこだわっているため、理想的には上記の手順で問題を修正できます。

理想的には、Duplicatorプラグインのドキュメントをチェックして、実行および動作するために必要な権限を確認する必要があります。

10
Thomas Ward

/var/www/htmlで作成したファイルまたはフォルダーがwww-dataによって自動的に所有されるようにするために、inotifyを使用できます。もっと。

最初にインストールします:

$ Sudo apt-get install incron

/etc/incron.allowを開いて、rootがincronを使用できるようにします。

$ Sudo vim /etc/incron.allow

ファイルにrootを追加し、保存して終了します。

以下を使用してincrontabを編集します。

$ Sudo incrontab -u root -e

次の行を追加します:

/var/www/html IN_CREATE /bin/chown -R www-data:www-data /var/www/html/

保存して終了。

これで、ファイルが/var/www/htmlディレクトリに作成されるとすぐに、自動的にonwershipがwww-data:www-dataに設定されます。

Incrontabの行の説明:

/var/www/htmlは、監視されるディレクトリです。

IN_CREATEは作成されたファイルを監視します。 ファイル変更マスクです。

/bin/chown -R www-data:www-data /var/www/html/は、実行するコマンド/アクションです。

6
krt

/ var/wwwおよび/ var/www/htmlの下のすべてのファイルおよびディレクトリの所有権をwww-data:www-dataに変更します

cd /var/www/
chown -R  www-data:www-data /var/www/
  • ./htmlはここで暗示されています(/ var/www /の一部として)
  • -Rは再帰的にします(したがって、/var/www/のすべてのディレクトリを走査します)。

ネットワークのユーザーのいずれかで作成するファイルまたはフォルダーが、www-data:www-dataによって自動的に所有されることを確認してください

  • / var/www/html /の中にあると思いますか?

Apacheの構成をwww-dataに設定します。 /etc/Apache2/envvarsをご覧ください

# envvars - default environment variables for Apache2ctl

export Apache_RUN_USER=www-data
export Apache_RUN_GROUP=www-data

これを編集した後、Apacheを再起動する必要があります(Sudo service Apache restart)。

それは、私が間違っていなければDuplicatorプラグインが行うことなので、phpスクリプトによって自動的に作成されたファイルを含みます)。

ここでの問題はおそらくプラグインではなくphpでしょう。ユーザーは、PHPが実行されるプロセスと同じでなければなりません。したがって、ユーザーとグループ(/etc/php5/Apache2/php.ini)の場合は、おそらくwww-dataにも設定する必要があります。

3
Rinzwind

解決しました!私はまだApache envvarsの問題だと思いますが、それが問題を解決した特定のものであるかどうかはわかりません...とにかくここに私がやったことがあります:

Envvarsを変更しました

export Apache_RUN_USER=boris
export Apache_RUN_GROUP=www-data

Sudo chown -R boris:www-data /var/www/

これで今のところ機能しています。さらにテストします...

1
Boris Chevreau