Hauptmenü

sript backup.sh auslösen

Begonnen von choetzu, 23 März 2017, 20:57:10

Vorheriges Thema - Nächstes Thema

choetzu

Hallo,

ich habe das backup.sh script in /opt/fhem/ liegen. Wenn ich dieses script via terminal auslöse, dann legt er schön ein backup ab. Aber wenn ich dies nun via FHEM steuern will, krieg ich immer eine Fehlermeldung:

So habe ich das DOIF erstellt:

([FHEM.Backup:state] eq "on") {system("sudo /opt/fhem/backup.sh &")} DOELSE

Es passiert nix. Und im Log zeigt es mir folgendes an:

2017.03.23 20:50:22 2: Backup_DOIF: {system("sudo /opt/fhem/backup.sh &")}: -1

Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die
Regeln erklärt hat.  Normalerweise läuft es auf drei Regeln hinaus:

    #1) Resprektieren Sie die Privatsphäre anderer.
    #2) Denken Sie nach bevor Sie tippen.
    #3) Mit großer Macht kommt große Verantwortung.

sudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben


was bedeutet das -1 hinter dem Logeintrag?
Raspi3, EnOcean, Zwave, Homematic

Otto123

Hi,

steht doch eigentlich alles da.

Warum braucht Dein backup.sh sudo?
Was macht das?
Bloß sudo weil unter unter dem "Normaluser" kein Recht an /opt/fhem/ ?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Puschel74

#2
Es wäre interessant zu sehen welche Rechte die Datei zur Zeit besitzt.

Ich würde die Dateirechte bzw. User so anpassen das FHEM diese auch ausführen darf.
Dann erspart man sich das sudo (was ja nicht zwangsläufig das Mittel der Wahl sein soll).

https://www.elektronik-kompendium.de/sites/raspberry-pi/2006091.htm

Edith: Und hier war Otto schneller  ;D
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

choetzu

danke Puschel74, chmod +x backup.sh hat glaub ich etwas geholfen.. jedoch gehts noch immer nicht..


Zitat von: Otto123 am 23 März 2017, 21:15:12
Hi,

steht doch eigentlich alles da.

Warum braucht Dein backup.sh sudo?
Was macht das?
Bloß sudo weil unter unter dem "Normaluser" kein Recht an /opt/fhem/ ?

Gruß Otto

danke für deine Antwort. Die Meldung ist für mich nicht ganz schlüssig (als Laie), deshalb habe ich mich an euch gewendet.  ich habe sudo verwendet, da mit dem code

([FHEM.Backup:state] eq "on") {system("/opt/fhem/backup.sh &")}

folgende Fehlermeldung geloggt wird:

2017.03.23 22:59:00 2: Backup_DOIF: {system("/opt/fhem/backup.sh &")}: -1
/mnt/backup bereits vorhanden
PING 10.0.1.18 (10.0.1.18) 56(84) bytes of data.
64 bytes from 10.0.1.18: icmp_seq=1 ttl=64 time=0.590 ms

--- 10.0.1.18 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.590/0.590/0.590/0.000 ms
10.0.1.18 erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //10.0.1.18/FHEM /Q/backup cifs username=XX,password=YYY,iocharset=utf8,sec=ntlm 0 0
mountComplete: //10.0.1.18/FHEM /Q/backup cifs username=XX,password=YYY,iocharset=utf8,sec=ntlm 0 0
mountComplete: //10.0.1.18/FHEM /Q/backup cifs username=XX,password=YYY,iocharset=utf8,sec=ntlm 0 0
mountComplete: //10.0.1.18/FHEM /Q/backup cifs username=XX,password=YYY,iocharset=utf8,sec=ntlm 0 0
mountComplete: //10.0.1.18/FHEM /Q/backup cifs username=XX,password=YYY,iocharset=utf8,sec=ntlm 0 0
mountComplete: //10.0.1.18/FHEM /Q/backup cifs username=XX,password=YYY,iocharset=utf8,sec=ntlm 0 0
/etc/fstab: Eintrag bereits vorhanden: //10.0.1.18/FHEM /Q/backup cifs username=XX,password=YYY,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
mount: only root can use "--all" option
Mounten hat anscheinend nicht geklappt, skip.


da "only root can use "--all" steht, dachte ich, ich müsse sudo verwenden.. Denn vom terminal aus benutze ich auch sudo bash..

aber es geht nicht... hmm.. wo liegt wohl der Hund begraben?
Raspi3, EnOcean, Zwave, Homematic

Otto123

Moin,

ich weiß es nicht genau, aber ich denke Du verwendest das mount falsch.
Klar ist in der Interaktion sudo immer einfach. Im Script ist es aus meiner Sicht immer schwierig und aus Sicherheitsgründen wurde ich immer versuchen es zu vermeiden.

Schau mal hier, vielleicht hilft das -> https://wiki.ubuntuusers.de/Samba_Client_cifs/

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

choetzu

Danke Otto für deine Mühe und Geduld. Ich mach mich weiter auf die Suche... ;)

Worauf ich als erstes eine Antwort suche: Was genau ist der Unterschied, wenn ich das backup-script per teminal ausführe mit

sudo bash /opt/Fhem/backup.sh

und wenn ich es per fhem mit

system("sudo /opt/fhem/backup.sh &")

Am terminal gehts bestens, auf fhem leider nicht...

Ist der fhem-code falsch?

Raspi3, EnOcean, Zwave, Homematic

supernova1963

Vielleicht liegt es daran, dass sudo auf ein Passwort wartet:
Mein Environment:
ubuntu server 16.04, fhem-user: fhem

root@SERVERFHEM:/etc/sudoers.d# cat myOverrides
fhem    ALL=(ALL) NOPASSWD: /opt/fhem/FHEM/backup.sh, /etc/init.d/homebridge, /usr/bin/nmap


choetzu

Herzlichen dank supernova, das wars! Es hat nun auch bestens geklappt... dadurch verstehe ich nun auch /etc/sudoers besser... danke
Raspi3, EnOcean, Zwave, Homematic

Otto123

Hi,
Du hast zwar jetzt die Sache mit sudo "im Griff" aber ich hatte gemeint es ist besser fhem den mount zu erleichtern.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

supernova1963

Hallo Otto,

bitte helfe einem Laien, wie mir, was meinst du genau mit 'mount erleichtern'?
Wie sähe denn die fstab aus, die das Ausführen der backup.sh von fhem besser und sicherer macht und was ist dabei unbedingt zu beachten bzw. welche Voraussetzungen müssen dafür geschaffen werden?

Eine Sicherheitslücke in fhem möchte ich unbedingt vermeiden.

Danke,

Gernot

Otto123

#10
Hallo Gernot,

ich habe das für dich mal durchgespielt, entsprechend meinem Link. Ich habe es als User pi getan, damit Du es nachvollziehen kannst:
Ich habe einen Windows Server mit einem share \\lsk2012\images.
Ich stehe in /home/pi/
mkdir ~/images # erzeugt einen Mountpoint in /home/pi/ -> /home/pi/images
nano .smbcredentials # erzeugt eine Datein .smbcredentials in /home/pi/
username=<benutzer>
password=<passwort>
domain=lsk2012
ctrl-o ctrl-x
chmod 600 ~/.smbcredentials  # Absichern der Datei
sudo nano /etc/fstab # einen entsprechenden Eintrag in der fstab erzeugen
//lsk2012/images /home/pi/images cifs noauto,users,credentials=/home/pi/.smbcredentials 0 0
ctrl-o ctrl-x
mount ~/images # mounted ohne sudo für den User pi das Verzeichnis \\lsk2012\images nach /home/pi/images

Alle Schritte stehen so auch in dem verlinkten Wiki.
Genauso geht das für den User fhem, das HomeDir für fhem ist typischerweise /opt/fhem
Ich würde in dem Fall den Mountpoint nach /media/ legen, da ist zusätzlich noch chown fhem:dialout /media/<mountdir> notwendig.

Damit sollte der mount Befehl in deinem Backup ohne sudo funktionieren.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

supernova1963

Hallo Otto,

vielen Dank für deine Hilfe.
Deine Erklärung enthält viele interessante Aspekte.
(Hinweis: In deiner fstab, 3.-letzte Zeile, fehlt imo ein 'b" im Verweis auf die  .smbcredentials)

Was mich verwirrt ist, wird die Standard backup.sh für den user fhem ohne sudo dadurch ausführbar, dass es sein HomeDir - Verzeichnis ist, und, ist das nicht, - vorsichtig nachgefragt -, ein Problem in Bezug auf die Sicherheit?

lg

Gernot

Otto123

#12
Moin Gernot,

das mit dem b war in meiner Testumgebung ein Tippfehler, ich wollte es dann richtig schreiben aber hab natürlich die Zeile aus meiner fstab einfach copy&paste?  :-[
Ich habe den Fehler oben korrigiert.

Das mit Deiner Frage verstehe ich nicht. Aber ein erster Ansatz:
Dein Problem bisher ist, dass Du den "mount Befehl" (eher das Konstrukt der Einrichtung) so verwendet hast, das dieses dann Systemweit zur Verfügung steht und nicht nur für den aufrufenden User. Damit braucht es sudo.
Mit dem HomeDir hat Sicherheitstechnisch nur die Ablage der Credentials etwas zu tun. Dadurch, dass sie ersten versteckt und zweitens chmod 600 nur durch den Benutzer selbst verwendbar werden, sind sie vor anderen Usern eigentlich sicher.
In meiner Anleitung war User pi der Eigentümer. Wenn man das jetzt einfach nach fhem "delegiert" fehlt dazu noch das setzen des Eigentümers:  chown fhem /opt/fhem/.smbcredentials

Welches Problem siehst Du noch?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

automatisierer

Hallo gernot,
du hattest das Problem gelöst, indem du den User FHEM zu den Sudoers hinzufügst. Somit hat der User FHEM ja alle Rechte erhalten die es gibt, da nach dem absenden eines Befehls mit sudo keine Sicherheitsabfrage (root Passwort) kommt, sind also alle Sicherheitsmaßnahmen ausgehebelt. Wenn du dagegen einem User über bestimmte Rechte den Zugriff auf einen Ordner oder eine Datei gewährst, dann kann er halt nur auf diesen Ordner / Datei zugreifen und sonst nix.

Wenn du also einen User zu der Gruppe Sudoers hinzufügst, ist dieser damit root gleich gesetzt und kann alle Systemeinstellungen verändern, auf alle Ordner/Dateien zugreifen und und und.

supernova1963

Ok, automatisierer, habe ich verstanden, der Eintrag in sudoers gibt, - auch wenn man es auf ein einzelne ausführbare Datei beschränkt -, dem user doch irgendwie, - wenn auch stark eingeschränkt -, root Rechte.

Danke, Otto, ich habe das Problem gar nicht, da mein DEV- und das LIVE-System jeweils in einer virtuellen Maschine läuft, die mit Time Machine im Hostsystem gesichert werden.
Aber ich wollte helfen, da ich erkannt habe, dass es sich um ein Rechte-Problem bei choetzu handelt. Den Sinn ein Backup in einem Unterverzeichnis von fhem abzulegen, habe ich nicht hinterfragt (ist, glaube ich, aber Voreinstellung). Du hast natürlich recht mit Allem, was du zu einem sinnvollen und sicheren Backup geschrieben hast. Deine Erläuterungen zur Einrichtung einer Samba-Freigabe und den Einstellungen zum mountpoint im HomeDir sind echt hilfreich. Nur die Nummer mit dem UserHome auf /opt/fhem, dass das wirklich typisch ist, war mir garnicht bewußt (habe ich bisher nicht).

So wie du es beschrieben hast, habe ich direkt keine Sicherheitsbedenken.

Welche größeren Sicherheitslücken siehst du denn konkret bei der kennwortfreien sudo Ausführung der Datei backup.sh oder, - was mich persönlich mehr interessiert -, von /etc/init.d/homebridge und /usr/bin/nmap. Hast du hierzu auch sicherere Alternativen?

Noch einmal Danke für die wertvollen Tips,

Gernot