Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. IoBroker User, file ownership und permissions

    NEWS

    • Node.js 16.x neue Empfehlung für ioBroker

    • Admin 6.0 als Beta

    • influxdb/sql/history Major Updates Beta

    IoBroker User, file ownership und permissions

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      peer6969 last edited by

      Hallo zusammen,

      eine Frage, die ich mir bei allen Installationsanleitungen und allen ioBroker Installationen, die mir bisher untergekommen sind gefragt habe ist: warum werden Zugriffsrechte immer nach dem Maximalprinzip verteilt? Ich versteh den Vorteil, denn so ist die Fehleranfälligkeit etwas geringer. Die Nachteile liegen allerdings auch auf der Hand. Wir wollen alle nicht, dass Unberechtigte Zugriff auf unseren ioBroker bekommen. Wir wollen außerdem nicht, dass die zum Teil doch recht wertvollen Passwörter und Zugangsdaten, die auf dem ioBroker-System liegen "verloren" gehen.

      Daher die Fragen: Warum laufen die ioBroker-Prozesse als root? Warum und wofür sind die Permissives 777 für /opt/iobroker notwendig? Meines Erachtens hätte man da schon einen erheblichen Sicherheitsgewinn, wenn ioBroker als non-root User ausgeführt würde und das /opt/iobroker nicht world writable wäre. Denn wer greift denn auf diesen Ordner zu? Eigentlich nur die Prozesse von ioBroker, die alle entweder als root oder eben als der konfigurierte ioBroker-User ausgeführt werden. Für 777 sehe ich daher keine Notwendigkeit, lasse mich aber gern aufklären.

      Um nicht nur zu kritisieren habe ich heute eine Installation auf Basis von CentOS 7 umgesetzt mit der ioBroker nicht mehr als root läuft. /opt/iobroker hat von mir 770 bekommen, damit läuft alles. 750 sollte auch gehen, aber in der ioBroker-Group ist ohnehin kein weiterer User. Ich habe außerdem Capabilites für Node hinzugefügt, damit die Netzwerkzugriffe und Zugriffe auf Systemressourcen funktionieren. Könnte man möglicherweise noch weiter einschränken, das war heute nur ein erster Versuch. Auch die zu installierenden Pakete können sicher noch ausgedünnt werden.

      Einige Fallstricke gibts auch noch. Nach einem ioBroker update && ioBroker upgrade bekommt /opt/iobroker wieder 777. Da muss man also jedes Mal nacharbeiten oder ein eigenes Skript nutzen. Außerdem wäre ein systemd-Service schöner, die Installation bringt aber ein init-script mit, daher hab ich es erstmal dabei belassen.

      Hier die Bash History meiner Installation. Daraus sollte sich auch relativ leicht eine Installation automatisieren lassen (für andere Linux-Distris als RHEL/CentOS und ggf. Fedora natürlich so nicht einsetzbar).

      # Before Installation add user (other than root) for access via ssh, deploy public keys and disable password login, 
      # disable root login and use formerly created user to su to root for this installation
      # Execute the following using root: 
      yes | yum update 
      curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
      yum -y install nodejs
      yum -y install gcc gcc-c++ make
      yum -y groupinstall "Development Tools"
      yum -y install python
      yum -y install avahi 
      yum -y install arpwatch
      yum -y install avahi-devel
      yum -y install avahi-tools
      yum -y install avahi-compat-*
      yum -y install libusb*
      yum -y install mariadb-server
      sudo setcap "cap_net_admin,cap_net_raw,cap_sys_rawio,cap_sys_resource+eip" /usr/bin/node
      adduser iobroker
      usermod -aG dialout iobroker
      mkdir /opt/iobroker
      chown iobroker:iobroker /opt/iobroker
      chmod -R 755 /opt/iobroker
      cd /opt/iobroker
      sudo -u iobroker npm install iobroker
      sudo -u iobroker npm install serialport
      ln -s /opt/iobroker/node_modules/iobroker/install/iobroker /usr/bin/iobroker
      cp /opt/iobroker/node_modules/iobroker/install/linux/iobroker.sh /etc/init.d/
      sed -i '/IOBROKERUSER=*/c\IOBROKERUSER=iobroker' /etc/init.d/iobroker.sh
      firewall-cmd --permanent --zone=public --add-port=8081/tcp
      # Add more ports, if necessary! This is only to make the web interface available.
      firewall-cmd --reload
      chown -R iobroker:iobroker /opt/iobroker
      sudo -u iobroker iobroker update
      sudo -u iobroker iobroker upgrade
      # After every update /opt/iobroker is chmodded 777\. Therefore we have to correct it this time and every time we run the upgrader
      chown -R iobroker:iobroker /opt/iobroker
      sudo -u iobroker chmod -r 770 /opt/iobroker
      sudo -u iobroker iobroker start
      
      

      Anschließend liefert ein ps folgendes und es werden keine iobroker Prozesse mehr als root ausgeführt:

      iobroker  71177  0.2  2.8 1233972 53140 ?       Ssl  18:06   0:18 iobroker.js-controller
      iobroker  71187  0.1  2.8 1095868 52396 ?       Sl   18:06   0:15 io.admin.0
      iobroker  71197  0.0  1.6 986472 30556 ?        Sl   18:06   0:02 io.discovery.0
      iobroker  71207  0.0  1.8 998552 34252 ?        Sl   18:06   0:02 io.web.0
      iobroker  71701  0.0  1.6 987036 30928 ?        Sl   19:08   0:01 io.ping.0
      iobroker  71711  0.1  2.2 1006560 42084 ?       Sl   19:08   0:05 io.javascript.0
      iobroker  71721  0.0  2.0 1000188 39104 ?       Sl   19:08   0:02 io.cloud.0
      iobroker  71907  0.0  1.9 1012512 36372 ?       Sl   19:14   0:02 io.yahka.0
      
      1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Forum Testing Most Active Global Moderator Administrators last edited by

        Hallo und Willkommen im Forum,

        Als lernwilliger Linux-noob bin ich gerne bereit das zu testen.

        Hast du Adapter laufen, die auf den Serialport (GPIOs oder USB) zugreifen.

        Hier kam es am häufigsten zu Problemen.

        Gruß

        Rainer

        1 Reply Last reply Reply Quote 0
        • P
          peer6969 last edited by

          Guter Hinweis, vielen Dank!

          Habe ich soeben getestet, da gibts tatsächlich Fehler vom cul Adapter:

          Cannot open port: Error: Error: Permission denied, cannot open /dev/ttyS0
          
          

          Die mir momentan am einfachsten erscheinende Lösung ist wohl, iobroker der Gruppe dialout hinzuzufügen, ich passe da oben mal an.

          Damit scheint es zu funktionieren:

          maxcul.0	2017-07-12 21:06:37.940	info	serialPort /dev/ttyS0 is open!
          maxcul.0	2017-07-12 21:06:37.932	info	using serial device /dev/ttyS0@38400
          maxcul.0	2017-07-12 21:06:37.808	info	starting. Version 0.3.0 in /opt/iobroker/node_modules/iobroker.maxcul, node: v8.1.4
          

          Hast Du noch einen Tipp für einen Adapter, den ich speziell für USB testen könnte?

          1 Reply Last reply Reply Quote 0
          • AlCalzone
            AlCalzone Developer last edited by

            @peer6969:

            Hast Du noch einen Tipp für einen Adapter, den ich speziell für USB testen könnte? `
            zwave kann mit speziellen USB-Sticks kommunizieren. Aber glaube, das ist für Linux kein Unterschied zu nem normalen Serialport.

            1 Reply Last reply Reply Quote 0
            • haus-automatisierung
              haus-automatisierung Developer Forum Testing last edited by

              Gibt es hierzu schon etwas Neues?

              Irgendwie habe ich kein gutes Gefühl alles per root auszuführen und zu installieren. Ist zumindest sehr ungewohnt. 😉

              Läuft die Variante mit eigenem Benutzer und eigener Gruppe (wie oben beschrieben) mittlerweile problemlos?

              1 Reply Last reply Reply Quote 0
              • P
                peer6969 last edited by

                Es funktioniert so wie beschrieben. Aber ich habe nicht jeden erdenklichen Adapter getestet. Für mich reicht es, da mag aber noch das ein oder andere zu debuggen sein.

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate
                FAQ Cloud / IOT
                HowTo: Node.js-Update
                HowTo: Backup/Restore
                Downloads
                BLOG

                1.2k
                Online

                47.8k
                Users

                55.4k
                Topics

                816.5k
                Posts

                4
                6
                2211
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2021
                logo