質問: raspbian Busterにてapacheを動かしています。 今、このapacheにてwebdavを使っているのですが、webdav上でディレクトリを作成すると、パーミッションの問題でそのディレクトリにおいては書き込みができません。 作成したディレクトリについても書き込みができるようにするのにはどのようにすればいいでしょうか。 よろしくお願いします。 ### 原因としてわかっていること apacheの実行ユーザ/グループ ユーザ :www-data グループ:www-data 対してwebdavで作成されるファイルの作成者 ユーザ :pi グループ:root となる。 →新しいディレクトリにファイルを保存するとき、www-dataユーザが作成しようとするためパーミッションで弾かれる。 実際、新しいフォルダに対して、chmod 777 or chown www-data.www-dataをすると書き込みできるようになる。 ### やってみたこと 1)apacheの実行ユーザをapache.confを書き換えることによって変えてみる。 ``` #apache.conf User pi Group root ``` →これをすると何故か現在できるファイルでさえも書き込み不可の状態になる。 2)/etc/apache2/envvarsを編集してumask値の変更を試す。 ``` #/etc/apache2/envvars umask 0000 ``` このあとapacheをstop/startコマンドにて再起動。 おそらくwww-data/www-dataのumaskは変更されたが、作成されるファイルはpi/root作成扱いになっているので、パーミッションは変化ない。(775になっている。) 3)シェルにてwww-dataユーザのumaskを変えてみる ``` $ pi@raspberrypi:~$ sudo -u www-data -s $ www-data@raspberrypi:~$ umask 0000 $ www-data@raspberrypi:~$ umask 0000 ``` →何故かはわからなかったけど、何も変化しなかった。 4)シェルにてpiユーザのumaskを変えてみる ``` $ pi@raspberrypi:~$ umask 0000 ``` →変わったのはpi/piのumaskだけでpi/rootのumaskは変わらなかった。 5)apacheの実行時のumaskの変更 /etc/systemb/system/apache2.service を作成。 ``` #/etc/systemb/system/apache2.service .include /lib/systemd/system/apache2.service [Service] UMask=000 ``` と記述。 ``` # systemctl --system daemon-reload # journalctl -n ``` と実行し有効化 →2)と同様の理由で変化はなかった。 ### 解決法として考えられること 1)pi/rootのumaskを000に変更 2)apacheの実行ユーザをpi/rootに変更 その他あればよろしくお願いします。 ### 現在の設定 ``` #apache.conf #略 User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} #WebdavサーバON LoadModule dav_module modules/mod_dav.so Dav On AuthType Digest AuthName "AuthName" AllowOverride None Options +Includes +Indexes +FollowSymLinks AuthUserFile home/pi/digest/.htdigest SSLRequireSSL Require valid-user ```
回答: 解決しました。。。 結論から言うとこの問題は僕の環境においてすごくユニークなものでした。 Raspberry Piの容量の心配からsambaで外部ストレージをマウントしてました。 ここで、raspberrypiでは対応しているsambaプロトコルが1.0までと、最低レベルのものになっているため、パーミッション設定が755固定となっていました。 そこで、普段使う用のフォルダはユーザ/グループ:pi/piとwebdab用のフォルダにユーザ/グループ:www-data/www-dataと二重でマウントすることでことなきを得ました。 ありがとうございました。