🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

パーミッション

パーミッション(許可)は、ファイルシステム、データベース、そして他のコンピュータシステムに対するユーザーのアクセス権のことを指します。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

1回答

2032閲覧

apache2/webdavのサブディレクトリの書き込み権限について

shinig001

総合スコア16

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

パーミッション

パーミッション(許可)は、ファイルシステム、データベース、そして他のコンピュータシステムに対するユーザーのアクセス権のことを指します。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2019/11/30 04:11

編集2019/11/30 04:14

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

1#apache.conf 2User pi 3Group root

→これをすると何故か現在できるファイルでさえも書き込み不可の状態になる。

2)/etc/apache2/envvarsを編集してumask値の変更を試す。

envvars

1#/etc/apache2/envvars 2umask 0000

このあとapacheをstop/startコマンドにて再起動。
おそらくwww-data/www-dataのumaskは変更されたが、作成されるファイルはpi/root作成扱いになっているので、パーミッションは変化ない。(775になっている。)

3)シェルにてwww-dataユーザのumaskを変えてみる

bash

1$ pi@raspberrypi:~$ sudo -u www-data -s 2$ www-data@raspberrypi:~$ umask 0000 3$ www-data@raspberrypi:~$ umask 40000

→何故かはわからなかったけど、何も変化しなかった。

4)シェルにてpiユーザのumaskを変えてみる

bash

1$ pi@raspberrypi:~$ umask 0000

→変わったのはpi/piのumaskだけでpi/rootのumaskは変わらなかった。

5)apacheの実行時のumaskの変更
/etc/systemb/system/apache2.service
を作成。

service

1#/etc/systemb/system/apache2.service 2.include /lib/systemd/system/apache2.service 3[Service] 4UMask=000

と記述。

bash

1# systemctl --system daemon-reload 2# journalctl -n

と実行し有効化
→2)と同様の理由で変化はなかった。

解決法として考えられること

1)pi/rootのumaskを000に変更
2)apacheの実行ユーザをpi/rootに変更

その他あればよろしくお願いします。

現在の設定

apache

1#apache.conf 2#略 3 4User ${APACHE_RUN_USER} 5Group ${APACHE_RUN_GROUP} 6 7#WebdavサーバON 8LoadModule dav_module modules/mod_dav.so 9<Directory home/pi/ROOTDIR> 10 Dav On 11 AuthType Digest 12 AuthName "AuthName" 13 AllowOverride None 14 Options +Includes +Indexes +FollowSymLinks 15 AuthUserFile home/pi/digest/.htdigest 16 SSLRequireSSL 17 Require valid-user 18</Directory>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。。。

結論から言うとこの問題は僕の環境においてすごくユニークなものでした。

Raspberry Piの容量の心配からsambaで外部ストレージをマウントしてました。
ここで、raspberrypiでは対応しているsambaプロトコルが1.0までと、最低レベルのものになっているため、パーミッション設定が755固定となっていました。

そこで、普段使う用のフォルダはユーザ/グループ:pi/piとwebdab用のフォルダにユーザ/グループ:www-data/www-dataと二重でマウントすることでことなきを得ました。

ありがとうございました。

投稿2019/11/30 04:54

編集2019/11/30 04:54
shinig001

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問