Beiträge von sschuste

    Du startest es in der Konsole, und wenn du die Konsole beendest, dann stirbt auch homebrigde. Du machst also alles richtig.


    Dein Fehler weiter oben lautet unter anderen:

    Error: EACCES: permission denied, open '/var/homebridge/persist/AccessoryInfo.CC223DE3CE30.json'

    Error Access permission denied. Du darfst da nicht lesen oder schreiben. Der Fehler tritt bei vielen Dateien in /var/homebridge auf, was nicht so sein sollte. Versuche mal das:


    sudo chmod 755 /var/homebridge

    sudo chown -R homebridge:homebridge /var/homebridge

    sudo systemctl restart homebridge; sudo journalctl -fau homebridge


    Stefan

    nur schlappe 184376 Dateien die wohl alle meinem User Pi gehören.

    Lol, aber lass es einfach so. Tatsächlich macht es nicht viel aus, da auf unseren Raspis nur homebridge läuft. Auf großen Computern, auf denen viele Programme installiert sind, kann eine solche Aktion ordentlich Ärger verursachen.


    Wahrscheinlich gehören nicht alle Dateien dem User pi. Das findest du heraus mit find /usr/local -user pi | wc -l. Mit dieser Information kannst du dann folgendes anfangen: nix :D


    Gruß

    Vielleicht über die command line


    sudo chown -R $USER /usr/local && npm install homebridge-Pluginname -g

    Was macht dieser Befehl? Als allererstes bewirkt er, dass ich mich mit Grausen abwende. Das ist seine primäre Funktion.


    Ansonsten besteht er aus den folgenden Zutaten:

    chown -R: change owner. Dieser Befehl weist einer oder einer Menge von Dateien einen neuen Besitzer zu. Der Parameter -R sagt aus, dass dies rekursiv geschehen soll, also über alle Unterverzeichnis hinweg und über alle Unterverzeichnisse in den Unterverzeichnissen und allen Dateien in diesen Unterverzeichnissen. Der neue Besitzer der Datei(en) ist dann


    $USER: Wer ist dieser ominöse $USER? Das ist genau der User, als der man gerade eingeloggt ist. Kann man testen mit echo $USER. Dem gehören dann alle Dateien in


    /usr/local: ist ein Verzeichnis auf dem Raspi, das eine Menge Dateien enthält. Der Begriff usr steht für Unix System Ressources, und im Verzeichnis liegen eine Menge Dateien, von denen manche für den Betrieb der auf dem Raspi installierten Programme essentiell sind. Er sollte immer root gehören.


    Der Befehl chown -R $USER /usr/local wird, wenn man als pi eingeloggt ist, also als chown -R pi /usr/local interpretiert. Ist man als homebridge eingeloggt, wird er als chown -R homebridge /usr/local interpretiert. Ist man gerade als root unterwegs, dann bedeutet er chown -R root /usr/local und ist man der Benutzer Erwin, dann bedeutet er chown -R Erwin /usr/local.


    Danach gehören alle Dateien im Verzeichnis /usr/local entweder pi, homebridge, root oder Erwin, je nachdem, wie man gerade eingeloggt war. Auf meinem Raspi befinden sich 80512 Dateien in /usr/local, die jetzt alle auf einmal irgendeinem neuen Benutzer gehören. Mir kann niemand weis machen, dass er von allen 80512 Dateien weiß, ob das gut oder schlecht oder egal ist, welchem User sie gehören. Vor allem wird die Herstellung des Ursprungzustands ein Ding der Unmöglichkeit sein.


    Wer wissen will, wieviele Dateien er in seinem /usr/local liegen hat, kann das leicht mit find /usr/local | wc -l herausfinden. Wird wahrscheinlich bei jedem unterschiedlich sein, weil wir alle unterschiedlich viele Plugins benutzen.


    Man könnte mit chown $USER alle Verzeichnisse auf dem Raspi so behandeln, und wenn man nur das richtige trifft, kann man den Raspi danach neu aufsetzen. Garantiert. Als Äquivalent kann man auch mit einer Schaufel auf das Ding einprügeln.


    Das wirklich Lustige ist: wenn der User homebridge nicht in Verzeichnisse schreiben kann, die root gehören, dann hat das schon so seine Richtigkeit. Aber wenn man schon die Rechte so verändern will, dass er es doch kann, dann hilft chown $USER /usr/local nichts, wenn man den Befehl als User pi ausführt, denn danach gehören die Dateien alle dem User pi und der User homebridge kann da immer noch nicht schreiben. Dafür hat man nun eine hässliche Installation.


    Die Moral von der Geschichte: wenn der User homebridge an einer Stelle nicht schreiben kann, dann muss er das woanders tun. Das kann er in seinem Homeverzeichnis /home/homebridge und im Homebridge-Konfigurationsverzeichnis /var/homebridge. Sonst nirgendwo. Das ist auch keine Eigenart von Homebridge und auch keine von Linux. Das ist auf einem Mac genauso wie unter Windows. Ja, ich weiß, das brauchte man damals nicht zu beachten auf dem C64 und unter DOS 2.11, auch nicht auf Apple System 7 oder Windows 95. Aber diese Dinger konnte man ja auch alle allein mit einem bösen Blick erledigen. Egal, die Plugins bieten oft die Möglichkeit an, einen Speicherort anzugeben, und wenn sie gut programmiert sind, dann schreiben die ganz automatisch in das Verzeichnis, in dem config.json liegt und wo das Schreiben erlaubt ist.


    DJay: Ich mache dir nicht den kleinsten Vorwurf, dass du die frohe Kunde mit chown $USER verbreitest. Das ist nämlich die Lösung irgendeines Plugin-Programmierers, die sowieso nur dann funktioniert, wenn man die Homebridge als User pi laufen lässt. Dem Typen gehören die Ohren langgezogen und danach muss er in die Ecke zum Schämen. Mit dem Gesicht zur Wand.


    So, das musste jetzt mal raus.


    Stefan

    PM] Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/homebridge-people-guest-mode/node_modules/node-persist/storage/.node-persist'

    Da darfst du nicht hinschreiben. Setze in config.json:


    "cacheDirectory": "/var/homebridge/homebridge-people/storage",


    Stefan

    Allerdings möppert das Log immer noch rum :-/

    :-/ Hmmm.


    Ich kann das leider nicht richtig nachstellen, weil bei mir Homebridge auf dem einen Raspi läuft und Pihole auf dem anderen. Ich habe das direkt auf der Shell getestet, und da ging das bei mir. Was ich also getan habe, war auf der Shell:


    sudo su - homebridge (macht dich zum User homebridge)

    pihole disable

    pihole enable

    exit


    Nachdem ich die sudoers-Datei bearbeitet hatte, konnte der User homebridge das Pihole ab- und wieder einschalten. Geht das bei dir auch?


    Dann begebe ich mich mal in das große Land der Spekulation: was passiert, wenn du die suoders-Datei nocheinmal bearbeitest und ganz hinten /usr/local/bin/pihole anfügst?


    sudo visudo -f /etc/sudoers.d/homebridge

    Ergebnis:

    Code
    homebridge ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge, /bin/journalctl, /usr/local/bin/node, /bin/bash, /usr/local/bin/pihole

    Stefan

    Kann ich.

    Da die Bridge unter dem user "homebridge" läuft,

    Ich nehme an, du hast die Homebridge nach der Forenanleitung installiert. Die Installation dort ist viel restriktiver als normale Installationen, und daher ist dem User homebridge nicht erlaubt, auf irgendwelche Befehle sudo anzuwenden (bis auf vier Kommandos). Festgelegt ist das in /etc/sudoers.d/homebridge.


    Du hast in deinem Skript alles richtig gemacht, wenn auch umständlich. Es würde auch einfach so gehen:

    Bash
    #!/bin/bash
    # Pi-Hole einschalten
    sudo -u homebridge pihole enable

    und ich würde es sogar so machen:

    Bash
    #!/bin/bash
    # Pi-Hole einschalten
    sudo -u homebridge /usr/local/bin/pihole enable

    aber der User homebridge darf kein sudo auf bash machen. Das ist gut, denn es erhöht die Sicherheit des Systems, aber es ist schlecht, weil es deinen Fehler erzeugt. Ich habe herumexperimentiert, ob man darauf verzichten kann, dem User homebridge die sudo-Rechte auf bash zu geben, aber man muss das leider tun. Doof, doof, doof. Sei's drum.


    Mache also folgendes:

    sudo visudo -f /etc/sudoers.d/homebridge


    und hänge an die Zeile ganz hinten an: /bin/bash


    so dass sie so aussieht:

    Code
    homebridge ALL=(root) SETENV:NOPASSWD: /usr/local/bin/npm, /bin/systemctl restart homebridge, /bin/journalctl, /usr/local/bin/node, /bin/bash


    Speichere sie ab und versuche es noch einmal.


    Stefan

    Ich Update meine Plugins und die Homebridge immer erst wenn ein Plugin ein Änderung/Funktion mit sich bringt, die ich als nützlich empfinde. Ansonsten lasse ich die Plugins und die homebridge unberührt, ganz nach dem Motto "never change a running system".

    Da bin ich völlig anders ^^. Zumindest die Plugins werden bei mir regelmäßig gepimpt.


    Stefan