2017-11-02 2 views
0

Ich versuche, eine Datei über den Befehl load_file von MySQL zu lesen. Aber das zurückgegebene Ergebnis ist Null und in meiner Abfrage ist kein Fehler aufgetreten.Welche UID wird von MySQL verwendet, wenn eine Abfrage durchgeführt wird?

Da die Datei, die ich versuche zu lesen, www-data geschützt ist, frage ich mich, was meine Identität im Server ist, wenn es nicht www-data ist.

Es ist ziemlich seltsam, da ich load_file verwenden kann, um /etc/passwd Datei zu lesen.

+0

MySQL-Abfragen sollten einen neuen Thread unter dem gleichen Linux-Benutzernamen/Benutzergruppe, die MySQL hat, spawnen. –

+0

Was wird 'ls -l/etc/passwd' ausgegeben? –

+1

Es klingt, als ob Sie etwas verwirrt sind, wie Berechtigungen funktionieren. "... s www-data protected" bedeutet nichts. Das DBMS sollte nicht als www-Daten laufen und Sie sollten sich nicht als www-Daten im System anmelden. Sie könnten in Betracht ziehen, hier zu beginnen: https://www.tutorialspoint.com/unix/unix-file-permission.htm – symcbean

Antwort

2

Die UID spielt keine Rolle. Die Funktion LOAD_FILE liest nur Dateien, die weltweit lesbar sind. Von den documentation:

Die Datei lesbar von allen und seiner Größe von weniger als max_allowed_packet Bytes sein muss. Wenn die Systemvariable secure_file_priv auf einen nicht leeren Verzeichnisnamen eingestellt ist, muss sich die zu ladende Datei in diesem Verzeichnis befinden.

Sie können damit nicht eine Datei lesen, die nur vom www-data Benutzer gelesen werden kann. Sie können es mit /etc/passwd verwenden, weil jeder diese Datei lesen kann.

+0

Das ist eine saubere Antwort und es hat mich mein Problem verstehen lassen. Vielen Dank. – Addict

Verwandte Themen