2020年の12月23日の時点でDrupal.orgから落としてくるインストールイメージ(tar.gz)だと、そのトップディレクトリが、webrootになるように構成されている。イメージファイルなどは、sites/default/filesなどのディレクトリの下に置かれるので、Webサーバーが走っているID(www-data等)で読み書きができないと動かない。今は、composerなしでモジュール管理を行うことは困難、現実的には不可能になっているので、OSのコマンドラインからcomposerで導入するなら、www-dataで書き込めない状態にしておければ安心感は高まる。
もちろん、sudo -uwww-data composer xxxという形で操作してもよいのだが、インストール時に自分のIDを利用して、その後もそのまま使えたほうが使いやすい。逆に、そういう作業ではsites以下のディレクトリを書き換えることはないので、そこから下を
sudo chown -R www-data.www-data sites
でパーミッションを設定してしまえば、その問題は解決する。
一方で、drushをコマンドラインで使う時にはsites以下のファイルを操作できる必要があるので、sudo -uwww-data vendor/bin/drush xxxといった形で操作することになる。でも面倒だ。
現在は、自分のIDをwww-dataのグループに参加させ、
sudo chmod -R g+w sites
でsudoすることなく操作を行っている。www-dataグループに書き込み権限を与えても、Webサーバーのアカウントはオーナー権限が与えられているのでWebサイトからのアクセスに影響は与えないからこれで良いと思っているのだが、適切な設定なのかは議論の余地があると考えている。
権限の問題は、とてもむずかしい。