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


13

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

私のセットアップ:

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

私の問題:

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

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

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

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

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

注:私は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を再起動し、新しいフォルダーを作成し、ファイルを追加し、プラグインを実行しました。


ファイルをwww-dataユーザーまたはグループが所有するように設定することはセキュリティ上悪い考えですが、まれにWebサーバーが書き込みアクセスを必要とする特定のファイルに必要になる場合があります。あなたが達成しようとしていることは何ですか?
トーマスラッター

回答:


11

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

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

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

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


質問#2への半回答:setgidビット

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

sudo chmod g+s /var/www/html

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

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


PHP Wordpress Duplicatorの問題

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

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

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


私はsetuidメソッドが好きです:)
Rinzwind

これはまさに私が探していたものです!!!! 唯一の問題:動作しませんでした:-(ローカルIPを介してサーバーにアクセスして、Macにフォルダーを作成しました(つまり、ubuntuデスクトップコンピューターでは作成しませんでした)。データ:-/
ボリスシェヴロー

フォルダーではなくファイルにユーザー所有権を設定したためですか?私が作成したフォルダがwww-data:www-dataによって自動的に所有されることができないという理由だけですか?
ボリスシェヴロー

MacはLinuxとは異なります。実際に不運な場合、この方法は機能せず、デフォルトファイルを設定するために単純なアクセス許可(ACLなど)以外の多くのことを行う必要があります。 。また、「機能しなかった」というのはあいまいです。defineは機能せず、質問の編集として出力が含まれます。
トーマスウォード

1
ディレクトリに適用されるのsetuidは常にLinux上では無視され、IIRC
muru

6

作成するファイルまたはフォルダーが、/var/www/html使用可能なwww-dataによって自動的に所有されるinotifyようにするには、cronに似ていますが、属性、ファイルの作成、変更などの変更についてフォルダー/ファイルを監視します。

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

$ sudo apt-get install incron

以下でincron開くことにより、rootが使用できるようにします/etc/incron.allow

$ 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/ 実行するコマンド/アクションです。


おそらくユーザー所有権頻繁に変更すべきではない、彼らは、ユーザーの所有権自体をリセット...または痛みをすることができ、使用するACLをすることができます-彼らはinotifyをとsetgidなく、このような何かを達成することができます
トーマス・ウォード

このサーバーの全体的な目的は、「ローカルホストのマスター」としてそれを使用することです。たとえば、ローカルホストWebサイトを作成し、非常に簡単にオンザフライでテストサイトを編集/置換/移動および作成できます。すべてを手動でリセットする必要がある場合は、目的全体が終了します:-/
ボリスシェヴロー

この「incron」の方法が唯一の方法ですか?なぜそんなに複雑なのか理解できません。私が探しているのは、ネットワーク内のすべてのコンピューターがこのサーバー上にWebサイトを作成する簡単な方法です。最終的に私は静的IPを持っていないので(したがってセキュリティは問題になりません)、あなたが念頭に置いている別のターンアラウンドはありますか?
ボリスシェヴロー

おかげで、魅力のように動作します!
-trurl

3

/ 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にも設定する必要があります。


Ubuntuのデフォルトでwww-dataは、Debianと同様にPHPプロセス/ワーカーが実行されます。
トーマスウォード

また、問題/var/www/htmlは、グループ所有権と読み取り/書き込み権限でもあります。もう1つの問題は、ユーザーが作成したファイルを持っているwww-data:www-dataことです。Wordpressユーザーではなくネットワークユーザーであるため、Linuxファイルのアクセス許可を取得する必要があります。
トーマス・ウォード

これらのネットワークのユーザーはそれのユーザーが、私はsudo useraddを-r -s / binに/偽USERNAMEを使用してUbuntuのサーバーで作成しましたが、確かにあると、ローカルネットワークの共有フォルダにアクセスするために使用されている
ボリスChevreau

boris:www-dataにすべてのフォルダーとファイルの所有権を変更して書き込み許可を戻し、apacheのenvvarsをboris:www-dataに変更したらどうなりますか?新しいファイルを作成するたびに所有者がboris:www-dataに設定されるため、問題が解決する可能性がありますか?
ボリスシェヴロー

2

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

envvarsを変更しました

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.