Userwechsel

M

Misfire

Grünschnabel
Hallo,

hoffe ich werde hier geholfen :)

ich habe ein root server auf Debian Etch.

da läuft plesk neuste version drauf.
habe darunter eine domain eingerichtet. und im verzeichniss

/var/www/vhosts/ <-- steht auch der domain name.

/var/www/vhosts/XxXxXx.de
der user dafür heisst "Elfriede"

nun habe ich in diesem bereich
/var/www/vhosts/XxXxXx.de/httpdocs/test/
ein dedicated server der bei reboot gestartet werden soll .
vorher sollen aber logdatein und cache geleert werden.

dazu habe ich ein script geschrieben was das löschen macht, und habe das auch unter /etc/init.d drin.

auch alles richtig verlinkt. das script wird auch bei einem reboot ausgeführt und es funzt alles .

nur :

er führt den kram als "root" aus und nicht als webuser "Elfriede"
dadurch kann ich mit php scripts nicht drauf zugreifen und sachen ausführen.

in der script datei habe ich jetzt einiges versucht :

su Elfriede -c "befehl" <-- geht nicht macht er nicht
su - Elfriede -l -c "befehl" <-- geht auch nicht

und google hat mir nach drei tagen suchen auch nicht weitergeholfen.

wie kann ich das nun einschreiben im script das er bei reboot die auszuführende sache unter "Elfriede" ausführt ?


danke für die hilfe

Grüsse

Misfire
 
Probier mal sudo aus.
Code:
sudo -u <user> <command>
Natürlich vorher noch die sudo Konfiguration anpassen. Siehe man page und/oder Google.

Gruß
 
jo danke für die antwort,

also muss ich ähm .. visudo benutzen um die konfig zu bearbeiten und dann muss ich in meinem fall in sudo den eintrag machen

# User privilege specification
root ALL=(ALL) ALL
Elfriede localhost = /var/www/vhosts/XxXxXx.de/httpdocs/test/

*Grün das was ich neu eintrage


und dann im script

sudo -u Elfriede ./start.sh

habe ich das richtig verstanden ?
 
verstehe ich nicht...

ich verstehe hier noch ein paar Sachen nicht...
  • Was loggt / cached der denn im ht(tp)docs? (heißt meistens "htdocs", k.a. bei dir..) Eigentlich loggt Apache irgend wo in /var/log/apache2 oder so...
  • Warum Logs bei Reboot löschen? Cache könnte ich verstehen, aber wenn was kaputt geht und du rebootest, sind die Logs weg! Wie willst du dann sehen, ob es daran lag, was vorher noch im Log stand?
  • Ein Script, das einfach nur beim Reboot was löscht, würde ich nicht kompliziert als Init-Script bauen - das ist eher was für Dienste, die in bestimmten Runleveln laufen sollen. Ich würde es einfach in /etc/init.d/boot.local eintragen, das ist ein guter Ort für Sachen, die beim Boot generell noch schnell mit laufen sollen.
  • Wieso soll es als irgend ein User laufen? Wenn es (egal ob als root!) beim Start irgend welche Dateien entsorgt, wirkt sich das nicht auf Schreibrechte in den Verzeichnissen aus.
    • Wenn doch Rechte geändert werden sollen und das Script läuft beim Start eh als root, einfach chmod und / oder chown benutzen.
Generell läuft ein Script, das beim Bootvorgang etwas löscht, ja nicht im Kontext des Webservers. Der startet ja erst viel später und findet dann seine aufgeräumten Verzeichnisse vor.

su und sudo haben nach dem, was ich hier mitbekomme, nichts damit zu tun. In der Datei /etc/sudoers stehen außerdem in der Regel Kommandos - das grüne bei dir ist aber ein Pfad!

Und - nix für ungut, aber das ist hier auch so ein Dauerthema... - bist du sicher, daß du einen Root-Server im Griff hast?
 
also das mit dem cashe ist so. der dedicated server legt da downloaddatein ab, die dann aber nicht mehr benötigt werden. darum löschen bei reboot.

da der dedicated server als root gestartet wird, kann ich irgendwie von php auf diesen dedicatet zwar zugreifen aber nichts einstellen da die wichtigen datein als root gestartet sind und auch so in dem verzeichniss dann abgelegt sind. also kein zugriff mit php.

starte ich das manuell als user Elfriede, funzt das .

wenn ich im script eingebe

su www-data ..... .....

dann funzt das . aber ich möchte das nicht als www-data starten sondern als Elfriede. das will irgendwie nicht starten.
 
Zuletzt bearbeitet:
hm, kann es immer noch sein, daß es ein Mißverständnis gibt?

Also, unter einem "vhost" verstehe ich einen "virtual host", der aber vom laufenden Apache-Prozeß "betrieben" wird - d.h. Apache startet mehrere Prozesse (mit Prefork) und versorgt alle seine in der Config angelegten virtual hosts entsprechend mit Daten. Diese virtual hosts laufen aber dementsprechend nicht als eigene Prozesse mit eigenem Besitzer.

Ich stolpere über "dedicated server", darunter verstehe ich was anderes als einen vhost innerhalb eines laufenden Apache...
 
Jo nu weiss ich wo das missverständniss liegt :)

also ich habe einen server , der startet ganznormal durch wie er soll.
rennt dann auch so wie er soll .

mit apache2 sql etc.

nun wurde im plesk eine domain angelegt die über url auch zu erreichen ist.

für die einrichtung der domain über plesk wurde ein webuser hunzugefügt. in meinem fall der User " Elfriede "

wenn ich jetzt die domain aufrufe funzt alles soweit und seite wird angezeigt im browser. auf dem webspace der Domain liegen ja die cgi scripte, html oder php datein. ( für forum chat etc )

unteranderem ist dort ein ordner erstellt worden wo ein dedicated server ( von einem spiel ) hininstalliert wurde.

Wenn ich den dedicated server starte , funktioniert das spiel und leute können sich dann über ihren client auf den dedicated server einloggen.

dieser dedicated server nennen wir den mal gameserver, wird unteranderem von einem anderen server der woanders steht ( extern ) gesteuert. das funktioniert über php die auf dem webspace liegen. ( Elfriede der Webuser )

wenn der gameserver nun gestartet wird, legt er datein an, diese datein müssen als owner aber Elfriede haben und nicht root. wenn die root haben kann die php datei nicht drauf zu greifen. wenn ich die datei mit chown bearbeite kann ich mit php wieder drauf zu greifen. nur der gameserver verändert die datei nach 5 min wieder und der owner ist dann wieder root.

also muss ich dann den gameserver mit dem User Elfriede starten damit die datein dann auch den Owner Elfirede bekommen. dann geht das mit php und soweiter auch .

denke da war das misverständniss.

der ganze server startet jeden sonntag mit einem reboot.

nun möchte ich nicht jedesmal den gameserver mit der hand starten. darum ein script das nach reboot ausgeführt wird und den game server wieder startet.

hoffe damit konnte ich jetzt so weiterhelfen
 

Ähnliche Themen

rsync Übertragung von Dateien zwischen zwei Servern

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

verzeichniss suche funktioniert nicht

ganze Netzwerkumgebung schagartig unsichtbar - 0S 13.1

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Zurück
Oben