Kann Mist (über IPC) mit einer Geth-Instanz kommunizieren, die von einem anderen Benutzer ausgeführt wird?

Mir ist bewusst, dass Mist keine Verbindung zu einem Geth-Knoten auf einem anderen Computer herstellen kann, aber wie wäre es mit einer Geth-Instanz, die auf demselben Computer, aber unter einem anderen Benutzer ausgeführt wird?

Mein Ziel wäre es, dass Alice und Bob dieselbe Brieftasche (über Mist) in derselben Linux-Box ausführen, aber die Geth immer unter der Haube im Hintergrund läuft, wenn der Computer startet, sodass die Blockchain ohne die immer synchron ist Notwendigkeit, die Mist-Benutzeroberfläche rund um die Uhr geöffnet zu lassen.

Dafür habe ich einen Benutzer namens getherstellt und einen freigegebenen Ordner namens erstellt /home/shared, der den .ethereumUnterordner enthalten wird. Dann mache ich diese Symlinks für alle Benutzer:

/home/geth/.ethereum -> /home/shared/.ethereum
/home/alice/.ethereum -> /home/shared/.ethereum
/home/bob/.ethereum -> /home/shared/.ethereum

Dann laufe ich, gethindem ich Folgendes tue:

sudo runuser -l geth -c 'nohup /home/shared/Ethereum-Wallet-linux64-0-8-1/resources/node/geth/geth > /home/geth/geth.log 2>&1 &' &

Und es scheint gut zu laufen und zu synchronisieren. Das Problem ist, wenn ich versuche, Mist in der Sitzung von Alice oder Bob auszuführen, gibt es Folgendes:

[2016-08-06 15:02:36.604] [INFO] Sockets/node-ipc - Connect to {"path":"/home/alice/.ethereum/geth.ipc"}
[2016-08-06 15:02:36.621] [WARN] Sockets/node-ipc - Connection failed, retrying after 1000ms...
[2016-08-06 15:02:37.623] [WARN] Sockets/node-ipc - Connection failed, retrying after 1000ms...
[2016-08-06 15:02:38.624] [WARN] Sockets/node-ipc - Connection failed, retrying after 1000ms...
[2016-08-06 15:02:39.626] [WARN] Sockets/node-ipc - Connection failed, retrying after 1000ms...
[2016-08-06 15:02:40.626] [WARN] Sockets/node-ipc - Connection failed, retrying after 1000ms...
[2016-08-06 15:02:41.628] [WARN] Sockets/node-ipc - Connection failed, retrying after 1000ms...
[2016-08-06 15:02:42.630] [WARN] Sockets/node-ipc - Connection failed, retrying after 1000ms...

Ich dachte, es sei ein Berechtigungsproblem, aber ich erstellte eine Unix-Gruppe namens family, fügte alle Benutzer hinzu (geth, alice und bob) und gab allen genügend Berechtigungen, um die IPC-Datei zu lesen, Beweis:

$ ls -lha /home/alice/.ethereum/
total 496K
drwxrwx--- 6 alice family 4.0K Aug  6 14:58 .
drwxrwsr-x 5 alice family 4.0K Aug  5 17:19 ..
drwxrwx--- 2 alice family 468K Aug  6 15:16 chaindata
drwxrwx--- 2 alice family 4.0K Aug  6 14:58 dapp
srwxrwx--- 1 geth  family    0 Aug  6 14:58 geth.ipc
drwxrwx--- 2 alice family 4.0K Aug  5 12:21 keystore
-rw-rwx--- 1 alice family   64 Aug  5 11:40 nodekey
drwxrwx--- 2 alice family 4.0K Aug  6 14:58 nodes

Nachdem Sie diese Berechtigungsänderungen vorgenommen haben, kann jedoch immer noch keine Verbindung hergestellt werden. Was ist mit der IPC-Verbindung falsch?

UPDATE: Anscheinend wird die Datei, nachdem ich geth gestoppt und erneut ausgeführt habe, erneut erstellt, jedoch mit nur 600 Berechtigungen. Vielleicht reicht es also nicht aus, die Berechtigungen zu ändern, nachdem die Datei erstellt wurde, und ich muss geth dazu bringen, die Datei mit den richtigen Berechtigungen zu erstellen? Ich habe versucht, dies zu tun, indem ich zwei Dinge tat:

  1. Verwenden umask 022: Dies funktioniert nicht, weder durch Hinzufügen /home/geth/.profilenoch durch Hinzufügen vor dem Start von Geth viasudo runuser -l geth -c 'umask 022 && nohup /home/shared/Ethereum-Wallet-linux64-0-8-1/resources/node/geth/geth > /home/geth/geth.log 2>&1 &' &

  2. Verwenden von ACL: tun setfacl -d --set u::rwx,g::rwx,o::- /home/shared/.ethereum. Funktioniert immer noch nicht.

  3. Festlegen der getid des Ordners über sudo chmod g+s /home/shared/.ethereum.

Und es funktioniert immer noch nicht, getherstellt weiterhin eine 600-Datei in /home/shared/.ethereum anstelle von 660

UPDATE II: Ändern Sie die Berechtigungen der IPC-Datei, damit 777es funktioniert !!! Warum funktioniert 770 nicht? Ich bin verwirrt. Ich möchte 777 nicht verwenden, weil es wie ein Sicherheitsrisiko erscheint.

:'(

$ getfacl geth.ipc 
# file: geth.ipc
# owner: geth
# group: gatecoin
user::rwx
group::rwx
other::---

Antworten (1)

Ich habe das Problem gelöst, indem ich diese 2 Punkte berücksichtigt habe:

  • Ich habe verwendet, umask 022aber das Richtige wäre gewesen umask 002. Dies funktioniert jedoch immer noch nicht (möglicherweise, weil geth die Maske fest codiert, wenn die Socket-Datei erstellt wird, anstatt die Standard-Umask für den Benutzer abzufragen). Als Problemumgehung verwende ich kurz nach dem Start von geth chmod 770 für die Socket-Datei.

  • Die Gruppenberechtigungen waren korrekt, aber nachdem ich den Benutzer derselben Gruppe wie der Benutzer hinzugefügt gethhatte, vergaß ich, dass sich der Benutzer erneut anmelden musste, damit die Änderung wirksam wurde. Nachdem ich den Computer neu gestartet hatte, funktionierten alle Berechtigungen.