NEWS
Javascript EACCES-Fehler (erledigt)
-
Systemdata Bitte Ausfüllen Hardwaresystem: Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz Arbeitsspeicher: 64GB Festplattenart: SSD 256 + ssd 64GB - Raid 6 24 TB Betriebssystem: 4.9.0-14-amd64 #1 SMP Debian 4.9.246-2 (2020-12-17) x86_64 GNU/Linux Node-Version: 12.22.1 Nodejs-Version: 12.22.1 NPM-Version: 6.14.12 Installationsart: Manuell (Docker-Image) Image genutzt: Ja Ort/Name der Imagedatei: https://github.com/buanet/ioBroker.docker Ich musste wegen Wartungsarbeiten meinen Server neustarten.
Nach dem Neustart bekam ich von Javascript-Adapter folgende Meldungen (nur bei diesen 4 Skripten, alle anderen wurden korrekt geladen ) :2021-07-03 15:55:19.280 - error: javascript.0 (651) Cannot write file /home/iobroker/common/Wetterstation_CreateDP.js: Error: EACCES: permission denied, open '/home/iobroker/common/Wetterstation_CreateDP.js' 2021-07-03 15:55:19.281 - error: javascript.0 (651) Cannot write file /home/iobroker/common/wetter/vorhersage_MD.js: Error: EACCES: permission denied, open '/home/iobroker/common/wetter/vorhersage_MD.js' 2021-07-03 15:55:19.282 - error: javascript.0 (651) Cannot write file /home/iobroker/common/Heizung/Heizung_Uhr.js: Error: EACCES: permission denied, open '/home/iobroker/common/Heizung/Heizung_Uhr.js' 2021-07-03 15:55:19.282 - error: javascript.0 (651) Cannot write file /home/iobroker/common/Heizung/Heizung_chkOil.js: Error: EACCES: permission denied, open '/home/iobroker/common/Heizung/Heizung_chkOil.js'
Ich habe darauf hin alle Skripte exportiert und neu importiert.
Resultat war, das alle Skripte die Meldung zeigten.
Ursache war, dass/home/iobroker
(und alle Unterverzeichnisse) Besitzer/Gruppe root:root gehörte(n).
Ein
curl -sL https://iobroker.net/fix.sh | bash -
brachte auch keine Abhilfe... (Natürlich nach Beendigung des Iobroker).
Ich habe das Problem durch ein
chown -R iobroker:iobroker /home/iobroker
gelöst.
-
Frage:
Passt das jetzt so oder verursacht das noch andere Probleme? -
Frage:
Wie kann sowas passieren?
Grüße und schon mal Danke
Boronsbruder -
-
@boronsbruder sagte in Javascript EACCES-Fehler:
/home/iobroker
Ist das ne Docker Eigenart oder warum liegt das nicht unter /opt/iobroker?
Würde auch erklären warum Du den Besitzer erst auf iobroker ändern musst da das so wohl nicht normal ist und dann auch gleich Deine Frage beantworten würde
-
@boronsbruder
Das spricht dafür, dass du da als root rumhampelst oder von vorne herein die Installation falsch vorgenommen wurde.Nie als root anmelden!
-
@jan1
der iobroker liegt und unter/opt/iobroker
nur die Javascripte des Javascript-Editor sind dort gespeichert.
Nope, ich hab dort nirgendwo rumgehampelt....
Import und Export über den Javascript-Adapter
Und die Installation war ein fertiger Container, der jetzt schon einige Jahre (mit einigen Updates) ohne Probleme lief...Und anfangs hatten ja nur 4 meiner rund 50 Skripte, das Berechtigungsproblem...
-
@boronsbruder Das kann nicht sein, wenn du da mit sudo / als Standarduser arbeiten würdest. Dann wäre das eine Privilege escalation.
Die Adapter laufen unter dem User iobroker, können also nie root:root als owner haben. -
@thomas-braun
Lest ihr die Post überhaupt?Der IOBROKER und seine Adapter liegt auch nicht in /home/iobroker
In dem Verzeichnis, das in der Fehlermeldung genannt wird, liegen nur die Skripte des Javascript-Adapters, also die, die man mittels dieses Adapters erstellt...
-
@boronsbruder Und die durch den Adapter erstellten Skripte können niemals dem root gehören, wenn es richtig aufgesetzt wäre. Denn der Prozess läuft im Regelfall mit dem User 'iobroker', er kann also nichts produzieren, was dann root gehören würde
-
@thomas-braun
Und genau, das ist das, was mich ja stutzig machttop - 21:14:56 up 4:20, 0 users, load average: 0,60, 0,57, 0,61 Tasks: 34 total, 1 running, 33 sleeping, 0 stopped, 0 zombie %Cpu(s): 1,0 us, 3,1 sy, 0,0 ni, 95,1 id, 0,5 wa, 0,0 hi, 0,3 si, 0,0 st MiB Mem : 64324,1 total, 448,8 free, 2793,7 used, 61081,6 buff/cache MiB Swap: 7685,0 total, 7664,6 free, 20,4 used. 60763,6 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 769 iobroker 20 0 624956 51412 15552 S 1,0 0,1 0:38.83 node 2257 iobroker 20 0 628292 52940 15872 S 0,7 0,1 0:25.09 node 32022 iobroker 20 0 916160 135024 18580 S 0,7 0,2 1:41.25 node 86 iobroker 20 0 928216 137692 16272 S 0,3 0,2 2:43.90 node 184 iobroker 20 0 619420 40124 15216 S 0,3 0,1 0:06.55 node 251 iobroker 20 0 907820 52560 16300 S 0,3 0,1 0:08.05 node 297 iobroker 20 0 922992 68116 16160 S 0,3 0,1 2:39.13 node 1843 iobroker 20 0 614976 37776 15216 S 0,3 0,1 0:06.40 node 3110 iobroker 20 0 716812 59744 15320 S 0,3 0,1 0:11.90 node 7570 root 20 0 11284 3344 2908 R 0,3 0,0 0:00.06 top
Laut "top" laufen, die Adapter auch korrekterweise unter dem User iobroker...
Ja, hier bin ich als root eingeloggt! -
@boronsbruder Du hampelst ja doch als root rum
Denn top läuft als aufrufender User, du hast den also als root aufgerufen.
Da brauchen wir jetzt gar nicht weiter diskutieren, man meldet sich einfach NIE als root an.Dann kommt es auch nicht zu falschen Besitzern der Dateien.
-
@thomas-braun
dann logg dich mal mit Portainer in die Console eines Containers ein, dann kommst automatisch als root rein...
und für den "top" hab ich das nicht umgestellt... -
@boronsbruder Ich hab so'n Kram hier nicht laufen. Aber auch in Containern kann man sauber mit den Rechten arbeiten.
-
@thomas-braun
Also nochmal:
Ich hatte mich nicht als root in den Container eingeloggt und irgendwelche Änderungen durchführt.
Ich habe nur den Server auf dem der Docker Container läuft neu gestartet. -