私はこれまで権限に苦労しており、別の質問を投稿しましたが、まだそれを修正する方法はなく、問題が何であるかを特定しました。
私のセットアップ:
Sudo useradd -r -s /bin/false USERNAME
を使用してubuntuサーバーで作成したユーザーを作成し、ローカルネットワーク共有フォルダーへのアクセスに使用します。つまり、ネットワーク上のコンピューターが/ var/wwwフォルダーに接続する場合、 Sambaを使用して共有。私の問題:
現在、ネットワークのコンピューターを使用して/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を再起動し、新しいフォルダーを作成し、ファイルを追加し、プラグインを実行しました。
質問#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プラグインのドキュメントをチェックして、実行および動作するために必要な権限を確認する必要があります。
/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/
は、実行するコマンド/アクションです。
/ 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によって自動的に所有されることを確認してください
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にも設定する必要があります。
解決しました!私はまだApache envvarsの問題だと思いますが、それが問題を解決した特定のものであるかどうかはわかりません...とにかくここに私がやったことがあります:
Envvarsを変更しました
export Apache_RUN_USER=boris
export Apache_RUN_GROUP=www-data
蘭
Sudo chown -R boris:www-data /var/www/
これで今のところ機能しています。さらにテストします...