Problem beim ausführen eines scripts mit shell_execute
Problem beim ausführen eines scripts mit shell_execute
ich möchte gerne eine datei ausführen, wenn ich ein phpscript aufrufe, das habe ich damit gelöst
shell_exec('sudo su arkserver -c "/home/arkserver/arkserver start"');
Das funktioniert aber nur, wenn ich sudo visudo mache und dort
www-data ALL=(ALL) NOPASSWD: ALL
eintrage.
www-data ALL=(ALL) NOPASSWD: /home/arkserver
funktioniert hingegen nicht, weiß einer woran das liegen könnte?
shell_exec('sudo su arkserver -c "/home/arkserver/arkserver start"');
Das funktioniert aber nur, wenn ich sudo visudo mache und dort
www-data ALL=(ALL) NOPASSWD: ALL
eintrage.
www-data ALL=(ALL) NOPASSWD: /home/arkserver
funktioniert hingegen nicht, weiß einer woran das liegen könnte?
Re: Problem beim ausführen eines scripts mit shell_execute
Ist das Kommando nicht /home/arkserver/arkserver ?C0kkie hat geschrieben:
shell_exec('sudo su arkserver -c "/home/arkserver/arkserver start"');
(...)
www-data ALL=(ALL) NOPASSWD: /home/arkserver
funktioniert hingegen nicht, weiß einer woran das liegen könnte?
Re: Problem beim ausführen eines scripts mit shell_execute
hjab auch schonalteholz hat geschrieben:Ist das Kommando nicht /home/arkserver/arkserver ?C0kkie hat geschrieben:
shell_exec('sudo su arkserver -c "/home/arkserver/arkserver start"');
(...)
www-data ALL=(ALL) NOPASSWD: /home/arkserver
funktioniert hingegen nicht, weiß einer woran das liegen könnte?
www-data ALL=(ALL) NOPASSWD: /home/arkserver/arkserver
probiert, geht auch nicht
Re: Problem beim ausführen eines scripts mit shell_execute
Und muss der Parameter nicht mit angegeben werden?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: Problem beim ausführen eines scripts mit shell_execute
www-data ALL=(ALL) NOPASSWD: /home/arkserver/arkserver stopTRex hat geschrieben:Und muss der Parameter nicht mit angegeben werden?
auch schon probiert
ch hab schon fast alles probiert :Z
da kommt auch
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
sudo: no tty present and no askpass program specified
Re: Problem beim ausführen eines scripts mit shell_execute
Eben seh ich..
shell_exec('sudo su arkserver -c "/home/arkserver/arkserver start"');
das sudo-command ist alles nach dem blau markierten Teil. Mit su führst du den arkserver mit bestimmtem Parameter aus, aber als Benutzer arkserver - und das komplett willst du dem www-data erlauben. Du hast aber nur den ark-server-command erlaubt.
shell_exec('sudo su arkserver -c "/home/arkserver/arkserver start"');
das sudo-command ist alles nach dem blau markierten Teil. Mit su führst du den arkserver mit bestimmtem Parameter aus, aber als Benutzer arkserver - und das komplett willst du dem www-data erlauben. Du hast aber nur den ark-server-command erlaubt.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: Problem beim ausführen eines scripts mit shell_execute
d.h.?TRex hat geschrieben:Eben seh ich..
shell_exec('sudo su arkserver -c "/home/arkserver/arkserver start"');
das sudo-command ist alles nach dem blau markierten Teil. Mit su führst du den arkserver mit bestimmtem Parameter aus, aber als Benutzer arkserver - und das komplett willst du dem www-data erlauben. Du hast aber nur den ark-server-command erlaubt.
seh grad bei der antwort nicht durch sry :X
Re: Problem beim ausführen eines scripts mit shell_execute
Alles nach dem blauen Teil muss in die sudoers-Datei, nicht nur das letzte bisschen in rosa.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: Problem beim ausführen eines scripts mit shell_execute
TRex hat geschrieben:Alles nach dem blauen Teil muss in die sudoers-Datei, nicht nur das letzte bisschen in rosa.
=
Re: Problem beim ausführen eines scripts mit shell_execute
Tja, dann ist das wohl formal falsch. Hast du mal das allmächtige Internet oder die naheliegende manpage befragt? Das würde ich nun tun.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: Problem beim ausführen eines scripts mit shell_execute
hab nichts sinnvolles gefundenTRex hat geschrieben:Tja, dann ist das wohl formal falsch. Hast du mal das allmächtige Internet oder die naheliegende manpage befragt? Das würde ich nun tun.
und
geht auch nicht
Re: Problem beim ausführen eines scripts mit shell_execute
...zweimal Halbwissen ist Viertelwissen.
Dein zweiter Codeschnipsel ist die (zumindest augenscheinlich) richtige Variante für sudo, warum machst du noch mit su rum?
Dein zweiter Codeschnipsel ist die (zumindest augenscheinlich) richtige Variante für sudo, warum machst du noch mit su rum?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: Problem beim ausführen eines scripts mit shell_execute
Was meinste?TRex hat geschrieben:
warum machst du noch mit su rum?
Re: Problem beim ausführen eines scripts mit shell_execute
Wenn du schreibst "geht nicht" verschweigst du, was du ausprobiert hast und was das Ergebnis war.
und das, was ich nicht abtippen werde (du weißt, wie copy-paste mit putty funktioniert?), könnte zusammen funktionieren.
Code: Alles auswählen
sudo -u arkserver /home/arkserver/arkserver start
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: Problem beim ausführen eines scripts mit shell_execute
ich raff garnichts mehr. stop geht, start geht nicht.TRex hat geschrieben:Wenn du schreibst "geht nicht" verschweigst du, was du ausprobiert hast und was das Ergebnis war.
und das, was ich nicht abtippen werde (du weißt, wie copy-paste mit putty funktioniert?), könnte zusammen funktionieren.Code: Alles auswählen
sudo -u arkserver /home/arkserver/arkserver start
und
shell_exec('sudo -H -u arkserver /home/arkserver/arkserver stop');
geht, aber
shell_exec('sudo -H -u arkserver /home/arkserver/arkserver start');
geht nicht - natürlich hab ich oben auch testhalber start eingesetzt
error.log:
failed to connect to server: Connection refused
versteh ich nicht :<
sudo -H -u arkserver /home/arkserver/arkserver start
manuell in die console geht aber komischerweise...
Re: Problem beim ausführen eines scripts mit shell_execute
hat da jemand noch ne idee?
Re: Problem beim ausführen eines scripts mit shell_execute
Ich würd nochmal beide Zeilen in die sudoers aufnehmen (einmal start, einmal mit stop) und dann nochmal als user www-data prüfen, obs wirklich nicht funktioniert. Und keine Bildschirmfotos mehr, bitte. In Putty den Text markieren, dann ist er in der Zwischenablage von Windows (ich unterstelle dir an der Stelle, dass du putty verwendest).
kannst du zum Testen verwenden, um den Befehl mit www-data auszuführen.
Code: Alles auswählen
su -c "sudo -u arkserver...." www-data
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: Problem beim ausführen eines scripts mit shell_execute
su -c "sudo -u arkserver /home/arkserver/arkserver start" www-dataTRex hat geschrieben:Ich würd nochmal beide Zeilen in die sudoers aufnehmen (einmal start, einmal mit stop) und dann nochmal als user www-data prüfen, obs wirklich nicht funktioniert. Und keine Bildschirmfotos mehr, bitte. In Putty den Text markieren, dann ist er in der Zwischenablage von Windows (ich unterstelle dir an der Stelle, dass du putty verwendest).
kannst du zum Testen verwenden, um den Befehl mit www-data auszuführen.Code: Alles auswählen
su -c "sudo -u arkserver...." www-data
=
This account is currently not available.
Re: Problem beim ausführen eines scripts mit shell_execute
Na Mist. Dachte ich mir schon fast... du kannst ihn wie folgt aktivieren:
Danach wieder deaktivieren:
und das su als root (oder mit sudo) ausführen - sonst musst du das Passwort für www-data kennen.
Code: Alles auswählen
usermod -s /bin/sh www-data
Code: Alles auswählen
usermod -s /usr/sbin/nologin www-data
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: Problem beim ausführen eines scripts mit shell_execute
hm also habs aktiviert dann den befehl ausgeführt und dann wider deaktiviert.TRex hat geschrieben:Na Mist. Dachte ich mir schon fast... du kannst ihn wie folgt aktivieren:
Danach wieder deaktivieren:Code: Alles auswählen
usermod -s /bin/sh www-data
und das su als root (oder mit sudo) ausführen - sonst musst du das Passwort für www-data kennen.Code: Alles auswählen
usermod -s /usr/sbin/nologin www-data
Aber warum führt er das nicht per php script aus? Also das start, denn stop nimmt er ja
Re: Problem beim ausführen eines scripts mit shell_execute
Du musst dafür sorgen, dass du kontrollierst und dir bewusst bist,
1. wie der Befehl aufgerufen wird
2. in welchem Environment der Befehl aufgerufen wird (ob es zB spezielle Umgebungsvariablen gibt, PATH gefüllt ist usw...)
3. welche Seiteneffekte der Befehl hat und wie du rausbekommst, welche
4. wie du an die Ausgabe des Befehls kommst.
2 mag für dich noch etwas kryptisch klingen, aber möglich wärs, dass du nach Sicherstellung von 3. (dass du evt ein Logfile von ark selbst findest) und 4. (dass du auch ein Logfile schreibst) rausfindest, dass der PHP-Prozess irgendwas braucht, was es in dem schmalen Environment nicht gibt. Momentan fliegst du blind, und ich schrubb die Glaskugel. Das ganze muss reproduzierbar werden... wenn du morgen aufstehst, dich auf dem Server einloggst und was anderes als heute passiert, ist das nicht der Fall.
In deinem Beitrag steht etwas, was ich so deuten könnte, als obs nun insgesamt funktioniert hätte. In den Systemlogs sollte der Authentifierungsversuch mit sudo auftauchen... du solltest zusätzlich zu dem obigen schauen, ob dein manueller Aufruf die gleichen Logzeilen erzeugt wie der Aufruf über PHP.
(als root)
Insbesondere steht da auch nochmal der COMMAND.
1. wie der Befehl aufgerufen wird
2. in welchem Environment der Befehl aufgerufen wird (ob es zB spezielle Umgebungsvariablen gibt, PATH gefüllt ist usw...)
3. welche Seiteneffekte der Befehl hat und wie du rausbekommst, welche
4. wie du an die Ausgabe des Befehls kommst.
2 mag für dich noch etwas kryptisch klingen, aber möglich wärs, dass du nach Sicherstellung von 3. (dass du evt ein Logfile von ark selbst findest) und 4. (dass du auch ein Logfile schreibst) rausfindest, dass der PHP-Prozess irgendwas braucht, was es in dem schmalen Environment nicht gibt. Momentan fliegst du blind, und ich schrubb die Glaskugel. Das ganze muss reproduzierbar werden... wenn du morgen aufstehst, dich auf dem Server einloggst und was anderes als heute passiert, ist das nicht der Fall.
In deinem Beitrag steht etwas, was ich so deuten könnte, als obs nun insgesamt funktioniert hätte. In den Systemlogs sollte der Authentifierungsversuch mit sudo auftauchen... du solltest zusätzlich zu dem obigen schauen, ob dein manueller Aufruf die gleichen Logzeilen erzeugt wie der Aufruf über PHP.
(als root)
Code: Alles auswählen
grep sudo /var/log/auth.log
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: Problem beim ausführen eines scripts mit shell_execute
TRex hat geschrieben:Du musst dafür sorgen, dass du kontrollierst und dir bewusst bist,
1. wie der Befehl aufgerufen wird
2. in welchem Environment der Befehl aufgerufen wird (ob es zB spezielle Umgebungsvariablen gibt, PATH gefüllt ist usw...)
3. welche Seiteneffekte der Befehl hat und wie du rausbekommst, welche
4. wie du an die Ausgabe des Befehls kommst.
2 mag für dich noch etwas kryptisch klingen, aber möglich wärs, dass du nach Sicherstellung von 3. (dass du evt ein Logfile von ark selbst findest) und 4. (dass du auch ein Logfile schreibst) rausfindest, dass der PHP-Prozess irgendwas braucht, was es in dem schmalen Environment nicht gibt. Momentan fliegst du blind, und ich schrubb die Glaskugel. Das ganze muss reproduzierbar werden... wenn du morgen aufstehst, dich auf dem Server einloggst und was anderes als heute passiert, ist das nicht der Fall.
In deinem Beitrag steht etwas, was ich so deuten könnte, als obs nun insgesamt funktioniert hätte. In den Systemlogs sollte der Authentifierungsversuch mit sudo auftauchen... du solltest zusätzlich zu dem obigen schauen, ob dein manueller Aufruf die gleichen Logzeilen erzeugt wie der Aufruf über PHP.
(als root)Insbesondere steht da auch nochmal der COMMAND.Code: Alles auswählen
grep sudo /var/log/auth.log
Nov 9 17:31:16 ns3019232 sudo: www-data : TTY=unknown ; PWD=/var/www/ark-webinterface/include/functions ; USER=arkserver ; COMMAND=/home/arkserver/arkserver start
Nov 9 17:31:16 ns3019232 sudo: pam_unix(sudo:session): session opened for user arkserver by (uid=0)
Nov 9 17:31:19 ns3019232 sudo: pam_unix(sudo:session): session closed for user arkserver
mehr steht da nicht, es wundert mich halt warum stop geht, und warum bei start im error.log steht:
failed to connect to server: Connection refused
Re: Problem beim ausführen eines scripts mit shell_execute
Ich hoffe, dass du den Rest auch gelesen hast. Das war kein tl;dr
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: Problem beim ausführen eines scripts mit shell_execute
Was evtl. noch von Bedeutung sein könnte, das script was den arkserver startet startet den server dann wiederrrum mit tmuxTRex hat geschrieben:Ich hoffe, dass du den Rest auch gelesen hast. Das war kein tl;dr
evtl. liegt es daran, das da irgendwie was blockt
hab das script jetzt umgeschrieben dass es mit screen geht