2017-01-12 1 views
1

zu ändern Ich benutze mod_wsgi, die die Fähigkeit hat, mein run.wsgi Skript dynamisch neu laden, wenn es eine Änderung gibt. Meine App hat viele Dateien, aber nur run.wsgi wird auf Änderungen überwacht. Google Docs empfiehlt, run.wsgi einfach zu berühren, wenn sich die App-Dateien ändern - was gut funktioniert.Erlauben verschiedenen Benutzer Fähigkeit, Zeit der WSGI-Datei mit Touch -m

Das Problem, das ich habe, ist, dass meine Anwendung in einem anderen (dedizierten) Benutzerverzeichnis als das Dokumentenstammverzeichnis meiner Website ist (aus Sicherheitsgründen), und unter bestimmten Umständen brauche ich den Benutzer, der die Site besitzt Berühre die run.wsgi-Datei im Verzeichnis des anderen Benutzers (um ein erneutes Laden der App zu erzwingen). Und Website-Benutzer kann nicht touch -m /home/app-user/app/run.wsgi

touch: setting times of ‘/home/app-user/app/run.wsgi’: Operation not permitted 

Ich habe bereits eine „gemeinsame“ Gruppe und aktualisierten Berechtigungen als solche:

usermod -a -G commongrp site-user 
usermod -a -G commongrp app-user 
chgrp commongrp run.wsgi 
chmod 770 run.wsgi 

Website-Benutzer in der Lage ist, um tatsächlich ändern die wsgi Datei, aber ich möchte das nicht tun. Ich möchte nur eine Änderung der Datei "fake" ohne eigentlich ändern. Gibt es eine sichere Möglichkeit, dies mit Linux-Berechtigungen zu tun, oder gibt es eine bessere Möglichkeit, dies zu tun?

Antwort

1

Ich würde vorschlagen, dass Sie sudo verwenden, damit der Site-Benutzer Touch als App-Benutzer ausführen kann. Bearbeiten Sie Ihre sudoers mit visudo Datei und erstellen Sie einen Eintrag wie folgt aus:

site-user ALL=(app-user) NOPASSWD: /usr/bin/touch 

Dann führen Sie es als App-Benutzer, wenn Sie mit sudo wollen:

site-user$ sudo -u app-user /usr/bin/touch -m /home/app-user/app/run.wsgi 
1

Wenn Sie den Daemon-Modus mod_wsgi (das bevorzugte Setup) anstelle des Embedded-Modus verwenden und die Prozesse im Daemon-Modus so ausgeführt werden, dass der Benutzer auf das System zugreifen kann, können Sie stattdessen senden Ein Signal an den Daemon-Modus führt dazu, dass sie neu gestartet werden. Standardsignale können SIGINT und SIGTERM zum geordneten Herunterfahren verwenden. Wenn die Prozesse im Daemon-Modus mit einer angemessenen Zeitüberschreitung konfiguriert sind, können Sie auch SIGUSR1 verwenden. Dadurch können Anforderungen länger ausgeführt werden, bevor ein Prozess beendet wird.

Wenn Sie die WSGI-Skriptdatei ändern können, können Sie auch eine Funktion angeben, die entscheidet, ob Prozesse im Daemon-Modus neu gestartet werden sollen, bevor eine Anfrage bearbeitet wird. Das würde bedeuten, eine Funktion zu kodieren, die den Zeitstempel einer anderen Datei prüft, um festzustellen, ob ein Neustart durchgeführt werden sollte.

Für weitere Hilfe zu diesem Thema verwenden Sie besser die mod_wsgi Mailingliste.

Verwandte Themen