[gelöscht]
Hallo,
ich habe ein größeres Problem. Vielleicht kann mir einer helfen.
Auf meinem Nas führe ich per Web PHP Script ein Bash Script aus.
/etc/sudoers :
http ALL=(ALL) NOPASSWD: ALL
PHP :
exec("sudo /opt/raidstart.sh");
Bashcript /opt/raidstart.sh :
mdadm --assemble /dev/md0 --scan --uuid=99a5f29a-2801-99e3-20ab-147c32f8a9f3
mount /dev/md0 /home/username/Raid5
Das funktioniert soweit auch ganz gut, aber jetzt kommt das komische.
Wenn ich nun als root den Befehl mount aufrufe, gibt es keinen mountpoint /home/username/Raid5.
/home/username/Raid5 ist auch leer wenn ich ls mache.
mache ich allerdings ein neues php script mit z.B. passthru("sudo mount");
ist es gemounted. Ich kann auch auf die Dateien zugreifen.
Aber der User root im System sieht keinen Mountpoint und keine Dateien.
Läuft da irgenwas in einer Art Sandbox ?
Wo liegt mein Fehler ?
Danke, Marcus ...
Dirk
Gorescore schriebWo liegt mein Fehler ?
Du machst so ziemlich alles sicherheitsrelevante falsch, was man nur falsch machen kann …
ALL=(ALL) NOPASSWD: ALL, PHP exec, PHP passthru, Skripte in /opt, mit einem Service-User Nicht-Service-Operationen ausführen wollen.
Dass root nichts sieht kann zwei Gründe haben: 1) du machst was falsch (wahrscheinlich, bei dem, was du hier schreibst), oder 2) das NAS arbeitet mit ACLs (wäre auch nicht unüblich).
Am besten überlässt du dem NAS die Verwaltung, und frickelst da nicht selbst mit irgendwelchen fragwürdigen Skripten unnötige Sicherheitslöcher rein …
Aber mal was anderes: Läuft auf dem NAS überhaupt Arch?
[gelöscht]
Das ist ein selbstgebautes NAS. Also eigentlich nur ein Arch Linux mit Samba.
Das Ding steht bei mir in der Wohnung und ist nur in meinem Internen Netz erreichbar.
Mir ist klar, das ich dem User http root Rechte gebe, da das ganze aber NUR für mich ist und sonst keiner Zugriff hat, ist das auch völlig egal.
Creshal
Anders herum gefragt: Was glaubst du machen zu wollen? 🙂 Ich bin mir ziemlich sicher, dass es da bessere Wege gibt…
[gelöscht]
Ich möchte per Webinterface ein Bash Script mit root Rechten ausführen.
Oder auch anders gesagt, per Webinterface ein Raid5 starten und mounten. So das alle Systemuser (gibt ausser root ehh nur einen) auf das Raid zugreifen kann.
Und nach Gebrauch per Webinterface das Raid5 wieder runterfahren und unmounten.
Creshal
Warum willst du das RAID manuell starten und mounten?
[gelöscht]
Aus Stromspar und Lautstärkegründen 😃.
Beim stoppen des Raids setze ich die HDs in den Standby Modus.
Und da der Rechner 24/7 läuft, aber ich das Raid nur 2-3 mal im Monat brauche, möchte ich es nur bei Bedarf angeschaltet haben.
Klar, kann ich das per SSH auch machen, aber ein Webinterface ist da schon bequemer.
Dirk
Gorescore schriebKlar, kann ich das per SSH auch machen, aber ein Webinterface ist da schon bequemer.
Bequemer als lokal bei dir auf der Kiste z.B.
startraid einzugeben, wobei das dann ein Alias ist, um per ssh den Befehl auf dem NAS abzusetzen? (Natürlich solltest du hierzu Key-Auth verwenden.)
[gelöscht]
Danke für die Beiträge, aber leider keine Lösung zu dem Problem.
Ich würde es gerne per Webinterface machen.
Meine Lösung bisher war, per Webinterface und Sudo (ich habe zu Debugging zwecken um moment für http alles aufgerissen, sobald es funktioniert, werde ich http auch wieder kastrieren) eine Bash Script auszuführen.
Irgendwie scheint das ganze aber in einer Art Sandbox zu laufen.
Das ganze lief jetzt 1 Jahr gut, aber vor ein paar Wochen habe ich ein Systemupdate gemacht, seit dem scheint die Sandbox da zu sein.
Mache ich per Webinterface ein exec("sudo mount"); und lasse mir die Ausgabe anzeigen sehe ich den Mountpoint, mache ich das eingelogt auf der Konsole per User root ist nichts gemountet.
Sprich der User root und andere User scheinen die Dateien nicht zu finden, wenn ich z.B. per PHP FTP Fileexplorer zugreife, sind die Dateien da.
Selbst wenn ich dem User http eine andere Shell gebe, also die Bash z.B. und mich als http einlogge ist nichts gemountet. Rufe ich den PHP FTP Fileexplorer zugreife, sind die Dateien da. Selber User !!!
Wohlgemerkt, 2 x selber User, per Webinterface mountpoint da und Dateien da, per Konsole eingelogt nix gemountet und keine Dateien da !
Ich habe auch schon auf der PHP Seite gesucht was sich in den neuen Versionen geändert hat, kann aber leider nichts finden.
Suche seit ca. 1 Woche das Internet ab, habe also auch nicht direkt ohne goggle zu nutzen gepostet.
Ich möchte einfach gerne wissen was da los ist !
Ob ich das ändere steht auf einem anderen Blatt Papier, es geht mir primär darum zu verstehen was schief läuft.
Danke.
Dirk
Gorescore schriebIrgendwie scheint das ganze aber in einer Art Sandbox zu laufen.
Benutze bitte nur Begriffe, die du auch verstehst.
[gelöscht]
Schreibe bitte keine Antworten auf meine Beiträge mehr.
Dirk
Gorescore schriebSchreibe bitte keine Antworten auf meine Beiträge mehr.
Sag mir nicht, was ich zu tun habe,
Edward d'Eath
Ich hole schon mal Popcorn und Chips.
Möchte jemand ein Bier?
Dirk
Edward d'Eath schriebMöchte jemand ein Bier?
Du weißt doch, kein Bier vor 18 Uhr … Wobei … Ist ja gleich so weit 🙂
fs4000
Jetzt beruhigt euch mal wieder. Dieses Phänomen nennt sich "mount namespace", mehr kann ich dazu aber auch nicht sagen.
Ergänzung: Wahrscheinlich ist der Auslöser eine Änderung des Systemd-Services, da gibts einige Optionen, die das betreffen (siehe man systemd.exec).
[gelöscht]
Jetzt habe ich einen Anhaltspunkt.
Bei Fedora scheint es übrigens einen systemd sandbox.service Dienst zu geben der dafür verantwortlich ist. Ich enthalte mich jetzt jeglichen Kommentares ...
Vielen Dank fs4000
Ovion
Gibt's denn den sandbox.service auf der besagten Maschine? Dass es das bei Fedora gibt, hilft dir bei 'nem Arch ja erstmal gar nix. Ich finde die sandbox.service zumindest nur im Zusammenhang mit Fedora, nicht aber mit Arch.
[gelöscht]
Ja, sandbox.service gibts bei Arch Linux leider nicht, ich habe leider auch noch nicht herausgefunden wie ich dieses Problem gelößt bekomme.
Naja, wenigstens weiß ich jetzt wie das Kind heißt.
Wenn ich was neues weiß, poste ich es.
[gelöscht]
@Gorescore:
Vielleicht nicht wirklich elegant, aber in jedem Fall sicherer als dein erster Versuch:
Bei Aufruf der Webseite zum aktivieren des Raid wird eine Flagdatei im httproot-Verzeichnis angelegt.
Ein Cronjob (von root) prüft minütlich, ob diese Datei existiert. Wenn ja, wird das Raid gestartet und gemountet,
danach dann die Flagdatei gelöscht. Existiert die Datei nicht, passiert halt nix weiter.
Zum Deaktivieren über das Webinterface wird eine weitere Flagdatei angelegt, bei deren Vorhandensein
der Cronjob alles nötige unternimmt...
Es gibt bestimmt noch schickere Lösungen, aber bei dieser bekommt zumindest niemand Rechte, die ihm eigentlich
nicht zustehen. Nachteil ist vielleicht, die maximal 1 Minute Verzögerung, wobei ich denke, wenn das nur Raid 2-3mal im
Monat nur benötigt wird, das noch vertretbar ist 😉
Gruß
bm1203
[gelöscht]
@bm1203
Danke für den Denkanstoß, ich habe es jetzt auch so gelößt.
Kann leider keine andere Lösung finden, das Problem mit den Namespaces bekomme ich nicht in den Griff, da leider auch nur sehr wenig Infos im Netz zu diesem Problem zu finden sind.