Wechseln Sie den Benutzer für die Ausführung von Prozessen mit API unter Nginx / Ubuntu

623
Niels

Ich möchte eine API mit Nginx (auf einem Ubuntu-Server) erstellen, die Prozesse ausführen kann (Befehle ausführen), aber www-data ist kein Benutzer, der Zugriff auf die Daten hat, mit denen diese Prozesse arbeiten. Was ist der übliche Weg, dies zu tun, ohne die Sicherheit zu beeinträchtigen? Mit anderen Worten, wie kann ich die API dazu veranlassen, Befehle als anderer Benutzer auszuführen?

0

2 Antworten auf die Frage

1
jtafurth

www-data ist nur der Benutzer, der den NGINX-Prozess standardmäßig ausführt. Ich gehe davon aus, dass Ihre API hinter NGINX ausgeführt wird. Dann würde Ihre API als www-data ausgeführt. Um zu lösen, was ich davon ausgehe, ist ein Berechtigungsproblem, das Sie beim Testen haben, müssen Sie die Berechtigungen Ihrer Daten ändern (falls lokal), damit der www-data-Benutzer und / oder die Gruppe lesen / schreiben oder einen neuen Benutzer für NGINX erstellen können zu rennen.

Ein paar Hinweise zur Arbeit mit einem NGINX:

  • Geben Sie dem Benutzer, der Ihren Webserver ausführt, keinen Root-Zugriff, da Ihre Webanwendung dann Root-Zugriff über Ihr System hätte, wodurch unnötige Schwachstellen entstehen.

  • Machen Sie Ihre Daten nicht öffentlich (offene Berechtigungen für alle Benutzer), sondern beschränken Sie sie auf den Eigentümer und bestimmte Benutzer, auf die sie zugreifen werden, auch wenn Sie der Meinung sind, dass Ihr Server sicher ist.

Wenn dies nicht das ist, wonach Sie suchen, machen Sie bitte genaue Angaben, um genauere und genauere Antworten zu erhalten.

Edit: realisiert, dass ich dir nie die Befehle zum Wechseln des Benutzers gegeben habe:

Um die Berechtigungen für eine Datei zu ändern, können Sie chmod und chown verwenden, um beispielsweise die Berechtigungen von Dateien für den Benutzer "www-data" zu ändern:

chmod 500 file1 file2 file3 chmod -R 500 directory1/  chown www-data:www-data file1 file2 file3 chown -R www:data:www-data directory1 

Solltest du anfangen!

Grüße

Das verstehe ich, aber täglich werden neue Daten unter dem Nicht-WWW-Datenbenutzer an dem Ort geschrieben, an dem gearbeitet werden soll, wie würde ich damit umgehen ... Niels vor 5 Jahren 0
Wenn die Daten von Ihrer API geschrieben werden, sollte sie automatisch die erforderlichen Berechtigungen erhalten, um sie später lesen zu können, vorausgesetzt, die API wird hinter dem NGINX ausgeführt, wenn es sich um ein externes System handelt, das den Benutzer dazu veranlassen würde, einen Teil des www- Datengruppe, selbst wenn er mit seinen eigenen Berechtigungen schreibt, kann der NGINX auf die neuen Daten zugreifen. jtafurth vor 5 Jahren 1
In diesem Fall reicht es nicht aus, diesen Benutzer zur Gruppe www-data hinzuzufügen. Für jede Datei / jeden Ordner muss auch diese Gruppe festgelegt sein, die nicht automatisch ausgeführt wird. Soll ich das mit einer Gruppenmaske oder so machen? Niels vor 5 Jahren 0
Nein, Sie fügen www-data zu der Gruppe hinzu, die beim Erstellen der Dateien festgelegt wird. Auf diese Weise hat jeder Ordner / jede Datei dies und Ihr nginx wird automatisch zugelassen jtafurth vor 5 Jahren 0
0
Niels

Das Aufrechterhalten einer Jobliste auf dem ausführenden Server und das lokale Ausführen der Jobs (Befehle) mit zB cron klingen nach einer guten Methode. Trennen Sie die API, mit der die Befehle und die Daten erstellt werden, vollständig voneinander. Keine Notwendigkeit für Maskierung und massive Änderungen usw.