MojaveでローカルのPHPフルディスクアクセスを許可する


0

私はPHPウェブページをローカルのapacheインストールで実行しています。このページでは、shell_execを使用してsqlite3経由でmessages / chat.dbにアクセスしています。

shell_exec("sudo -u ben sqlite3 ~/Library/messages/chat.db \"SELECT ...

Mojaveの前に私は正しく応答を得ました、しかしMojaveにアップデートしてから私は得ます:

unable to open database

ターミナルで直接実行すると、これと同じ問題が発生し、システム環境設定の「フルディスクアクセス」パネルにターミナルを追加することで解決します。

PHPページに追加する必要があるものがわかりません。 sqlite3、apachectl、php-fpmなど、見つけられるものはすべて試しましたが、うまくいきませんでした。

何を追加する必要がありますか?

参考:benはsudoersファイルにあります


あなたはこれをサポートするためにsudoersにいくつかのルールがありますか?あなたがしようとするとどうなりますか ls PHPからチャットDB、これは動作しますか?
nohillside


@nohillside - 正しいです - 読みやすくするために少し削除します - 追加しました -u ben 戻って! ls また失敗します。
Ben Robinson

@JBis - これは違います。その質問への答えは私が言及した "フルディスクアクセス"プロセスを説明していますが、私は追加する特定のアプリケーションの後だ...
Ben Robinson

回答:


2

あなたはおそらくそれを間違ってやっています。

まず第一に、 sudo 通常、パスワードを入力する必要があり、それはWebアプリケーションを介しては起こりません。

第二に、 _www ユーザーが慣れない sudo。これは大きなセキュリティホールです。変更することすら考えていません sudoers 許可する

代わりにすべきことは、 _www ユーザー(Webサーバーが実行されているユーザー)へのアクセス chat.db このようなファイル:

sudo chgrp _www ~/Library
sudo chgrp _www ~/Library/messages
sudo chgrp _www ~/Library/messages/chat.db
chmod g+rx ~/Library
chmod g+rx ~/Library/messages
chmod g+r  ~/Library/messages/chat.db

1
グループを変更する ~/Library 所属するのは危険です。このフォルダを所有しているユーザーと同じグループに属していることを前提とした他のプロセスやアプリケーションがあるかもしれません。
nohillside

+1良い答え、私は@nohillsideに同意しますが、より良い方法があります _www 許可。また、そうしてはいけない と思う Webプロセス(apache / php)をrootで実行する方法
JBis

これは機能しますか?選択を解除しなければならない許可をめちゃくちゃにするのは不安です。私は、sudoersファイルでユーザーとして実行しているという質問に失敗しました - そのユーザーはチャットファイルにアクセスできます。しかし、(例えば)TerminalをFull Disk Accessリストに追加せずに端末経由では行いません。それで、これはユーザー権限の問題ではないのですか。ところで - これはモハーベ更新の前に働いた
Ben Robinson

0

検証するMojave以外のシステムはありませんが、Mojaveを使用 ~/Library アクセス権がかなり制限されています。

pse@Mithos:~$ ll -d . Library Library/Messages Library/Messages/chat.db
drwxr-xr-x@ 137 pse  staff      4384 Nov 11 09:11 ./
drwx------+ 139 pse  staff      4448 Oct  8 20:52 Library/
drwx------   13 pse  staff       416 Sep 27 17:47 Library/Messages/
-rw-r--r--    1 pse  staff  12169216 Nov 15 20:08 Library/Messages/chat.db

理論的にはどのユーザーでも読むことができます chat.db 現在のユーザー以外には、それが存在するディレクトリに実際にアクセスすることはできません。

他の人がファイルにアクセスするのを心配していないのならば

chmod o+x ~/Library
chmod o+x ~/Library/Messages

すべてのユーザーが内のファイルにアクセスできるようにする Messages。それでも他のディレクトリにアクセスしたり、のコンテンツを一覧表示することはできません。 Messages


問題は解決しない - PHPはまだファイルを見ることができない
Ben Robinson

0

正しい答えではありませんが、私が考え出すことができる唯一の賢明な解決策です。

私はに基づいて簡単なMacアプリを書いた GCDWebServer それはPHP / Apache / etcを使用せずにデータベースコンテンツを提供することができます...

そのアプリにはフルディスクアクセスを与えることができ、すべてうまくいきます。

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