Hallo,
ich habe 2 Benutzer angelegt mit
define admin allowed
attr admin validFor WEB
attr admin basicAuth { "$user":"$password" eq "admin":"<secret>" }
attr admin allowedCommands *
define user allowed
attr user validFor WEB
attr user basicAuth { "$user":"$password" eq "fhem":"<secret>" }
attr user allowedCommands get,set
Die Annahme war, dass der Benutzer admin alle Befehle ausführen darf.
Dies ist aber nicht so.
Frage:
Welche Konfiguration ist notwendig, damit admin vollständige Berechtigung bekommt?
THX
Lass das Attribut allowedCommands einfach weg.
Hi,
ergänzend zu marvins Vorschlag: Ein Blick in die Doku:
ZitatallowedCommands
A comma separated list of commands allowed from the matching frontend (see validFor).
If set to an empty list , (i.e. comma only) then no comands are allowed. If set to get,set, then only a "regular" usage is allowed via set and get, but changing any configuration is forbidden.
Sterne sind da nicht sinnvoll:)
Gruß Otto
Ich habe die Konfiguration von allowed modifiziert:
define admin allowed
setuuid admin 5cd07e78-f33f-a13d-ac71-574c44a1641d2db0
attr admin basicAuth SHA256:11E96F3B:BbPXVzVh8FgIxj75ycXrH9u
attr admin room Einstellungen
attr admin validFor WEB
define user allowed
setuuid user 5cd07f09-f33f-a13d-f76c-0d866ce00770e976
attr user allowedCommands get,set
attr user basicAuth SHA256:2D370CFD:ZNY/aAgIcjzeRZvgDHKsSN1
attr user room Einstellungen
attr user validFor WEB
Jetzt erhalte ich diese Fehlermeldung (im Log) beim Versuch, eine Modifikation zu speichern:
2019.05.07 18:31:03 3: Forbidden command save for WEB_192.168.1.28_32324
Als User oder als Admin?
Würde sagen falsch angemeldet?
Es sieht für mich danach aus, als ob ein Passwort mit Sonderzeichen (: oder %) Probleme bereitet.
Ich verwende einen Passwort-Generator und generiere damit komplexe Passwörter.
Kann ich auch auf CLI ein Passwort generieren und dieses dann in der fhem.cfg als
attr admin basicAuth SHA256:<encoded password>
eintragen?
Nun verwende ich diese Konfiguration:
define admin allowed
setuuid admin 5cd1f4f5-f33f-a13d-be39-966d5fa94a1aa599
attr admin basicAuth SHA256:2E4EAF70:pa7j7xgwwyFbmQ/86akoY7K
attr admin room Einstellungen
attr admin validFor WEB
Ich finde diese Meldung im Log nachdem ich mich als admin angemeldet habe:
2019.05.08 20:22:13 3: Forbidden command perl for WEB_192.168.1.28_62396
2019.05.08 20:22:13 1: stacktrace:
2019.05.08 20:22:13 1: main::allowed_Authorize called by fhem.pl (3717)
2019.05.08 20:22:13 1: main::CallFn called by fhem.pl (5530)
2019.05.08 20:22:13 1: main::Authorized called by fhem.pl (1101)
2019.05.08 20:22:13 1: main::AnalyzePerlCommand called by fhem.pl (1157)
2019.05.08 20:22:13 1: main::AnalyzeCommand called by fhem.pl (1086)
2019.05.08 20:22:13 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2667)
2019.05.08 20:22:13 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (897)
2019.05.08 20:22:13 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (567)
2019.05.08 20:22:13 1: main::FW_Read called by fhem.pl (3717)
2019.05.08 20:22:13 1: main::CallFn called by fhem.pl (749)
2019.05.08 20:22:40 3: Forbidden command rereadcfg for WEB_192.168.1.28_62394
2019.05.08 20:22:40 1: stacktrace:
2019.05.08 20:22:40 1: main::allowed_Authorize called by fhem.pl (3717)
2019.05.08 20:22:40 1: main::CallFn called by fhem.pl (5530)
2019.05.08 20:22:40 1: main::Authorized called by fhem.pl (1221)
2019.05.08 20:22:40 1: main::AnalyzeCommand called by fhem.pl (1086)
2019.05.08 20:22:40 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2667)
2019.05.08 20:22:40 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (940)
2019.05.08 20:22:40 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (567)
2019.05.08 20:22:40 1: main::FW_Read called by fhem.pl (3717)
2019.05.08 20:22:40 1: main::CallFn called by fhem.pl (749)
Du solltest Dein Passwort ändern. Obiges Passwort ist relativ einfach zu encodieren .. und damit weiß das Web Dein Passwort
ZitatObiges Passwort ist relativ einfach zu encodieren .. und damit weiß das Web Dein Passwort
Ich gehe immer noch davon auss, dass SHA256 sicher ist.
Genau fuer solche "Unfaelle" habe ich es eingebaut.
ZitatIch finde diese Meldung im Log nachdem ich mich als admin angemeldet habe:
Da ich kein alleowedCommand sehe: hast du das Attribut entfernt?
Was war vorher gesetzt?
Kommt das Problem auch nach einem FHEM Neustart?
Zitat von: rudolfkoenig am 08 Mai 2019, 23:09:07
Ich gehe immer noch davon auss, dass SHA256 sicher ist.
Genau fuer solche "Unfaelle" habe ich es eingebaut.
Da ich kein alleowedCommand sehe: hast du das Attribut entfernt?
Was war vorher gesetzt?
Kommt das Problem auch nach einem FHEM Neustart?
Das in meinem Posting angegebene Passwort ist gekürzt; aus Sicherheitsbedenken poste ich niemals mein Passwort, weder decoded noch encoded.
Ja, ich habe das Attribut
allowedCommands gelöscht, weil hier im Thread dazu instruiert wurde, d.h. wenn ich einen Benutzer mit Full Access haben möchte, dann soll dieses Attribut gelöscht werden.
Kann ich das Passwort mit Sonderzeichen in der CLI encoded generieren; ich habe den Eindruck, dass dies über die WebUI fehlschlägt.
Oder funktioniert dieser Befehl:
set admin basicAuth admin "<passwort_mit_sonderzeichen"
Zusammengefasst gibt es 2 Probleme:
- Anlegen eines Benutzers admin mit Full Access (der alle Befehle ausführen kann)
- Erstellen eines Passworts mit Sonderzeichen
@rudolfkoenig
Bezüglich Passwort:
Stimmt .. das hatte ich jetzt übersehen ... trotzdem sollte man ein Passwort nicht posten .. egal wie ;o)
@cmonty14
Das war nur aus Deinem posting nicht ersichtlich. Ich werde immer eine solche Bemerkung schreiben, wenn ich so etwas sehe ;o)
"Nichts für ungut"
ZitatAnlegen eines Benutzers admin mit Full Access (der alle Befehle ausführen kann)
In der zugeordneten allowed Instanz kein allowedCommands setzen, oder alle Befehle einzeln auffuehren, d.h. alle bekannten FHEM-Befehle + perl und shell
ZitatErstellen eines Passworts mit Sonderzeichen
Meines Wissens gibt es damit keine Probleme, bis jemand mir
mit einem Beispiel das Gegenteil beweist.
Zitat von: cmonty14 am 09 Mai 2019, 00:28:33
Oder funktioniert dieser Befehl:
set admin basicAuth admin "<passwort_mit_sonderzeichen"
Zusammengefasst gibt es 2 Probleme:
- Anlegen eines Benutzers admin mit Full Access (der alle Befehle ausführen kann)
- Erstellen eines Passworts mit Sonderzeichen
Hi,
ich habe das bei gerade nochmal probiert:
set allowedOTTO basicauth otto *#?§$%&
Die gesamte Raw DEF, ungekürzt und ohne fake. Kann man so direkt verwenden und testen.
defmod allowedOTTO allowed
attr allowedOTTO basicAuth SHA256:1F2DBB3C:y0Wgv9kKNJD8RzhONB9oT6nVMVdClv96Ajr57Nj1QCI
attr allowedOTTO validFor WEBfest
defmod WEBfest FHEMWEB 8089 global
attr WEBfest stylesheetPrefix f18
Der Benutzer otto kann sich anmelden und FHEM normal und komplett bedienen.
Gruß Otto
Ich habe die Schritte zum Anlegen der Benutzer nochmals neu gestartet nachdem ich die vorige Konfiguration gelöscht habe.
Hier die genaue Vorgehensweise:
- define allowed_admin allowed
- set allowed_admin basicAuth admin <password>
- über WebUI das Attribut room Einstellungen definiert
- über WebUI das Attribut validFor WEB definiert
Danach muss beim Aufruf der WebUI eine Authentifizierung mit admin + <password> erfolgen.
Das bedeutet, das (komplexe) Passwort mit Sonderzeichen funktioniert.
Es gibt allerdings 1 Einschränkung: das Passwort darf
keinen Doppelpunkt enthalten.
Jetzt lege ich einen weiteren Benutzer wie folgt an:
- define allowed_fhem allowed
- set allowed_fhem basicAuth fhem <password>
- über WebUI das Attribut room Einstellungen definiert
- über WebUI das Attribut validFor WEB,WEBphone,WEBtablet definiert
- über WebUI das Attribut allowedCommands get,set,help,show definiert
Unmittelbar nach der Definition des Attributs
allowedCommands kann ich die Konfiguration nicht mehr speichern; diese Meldungen werden im Log angezeit:
2019.05.09 11:48:14 3: Forbidden command save for WEB_192.168.1.20_56663 2019.05.09 11:48:14 1: stacktrace:
2019.05.09 11:48:14 1: main::allowed_Authorize called by fhem.pl (3717)
2019.05.09 11:48:14 1: main::CallFn called by fhem.pl (5530)
2019.05.09 11:48:14 1: main::Authorized called by fhem.pl (1221)
2019.05.09 11:48:14 1: main::AnalyzeCommand called by fhem.pl (1086)
2019.05.09 11:48:14 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2667)
2019.05.09 11:48:14 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (897)
2019.05.09 11:48:14 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (567)
2019.05.09 11:48:14 1: main::FW_Read called by fhem.pl (3717)
2019.05.09 11:48:14 1: main::CallFn called by fhem.pl (749)
Sobald ich das diese Zeile
attr allowed_fhem allowedCommands get,set,help,show
in
/opt/fhem/fhem.cfg auskommentiere und den Service fhem restarte funktioniert das Sichern von Änderungen wieder.
Allerdings hat dann der Benutzer
fhem volle Berechtigung.
https://commandref.fhem.de/#allowed
ZitatIf set to get,set, then only a "regular" usage is allowed via set and get, but changing any configuration is forbidden.
Works as designed :)
Oder habe ich das Vorgehen falsch verstanden? Ich konnte aus dem letzten Post jetzt irgendwie kein Fehlverhalten erkennen?
Edit:
Ach so: Nach dem ich den Beitrag von Leon gelesen habe: Du warst noch als admin und nicht fhem angemeldet? Oder gar nicht angemeldet?
Säge nie an dem Ast auf dem Du gerade sitzt ... ;D ;D ;D
Ich überlege gerade ob es nicht so war das man gar nicht 2 User pro FHEMWEB Instanz anlegen kann. Bzw glaube ich das der kleinste gemeinsame Nenner vom allowed genommen wird.
Sprich wie ich schon mal gaaaaanz zu Anfang schrieb. Pro User eine FHEMWEB Instanz.
Aber Rudi kann da sicherlich was genaueres zu meiner Aussage sagen.
ZitatIf there are multiple instances defined which are valid for a given frontend device, then all authorizations must succeed. For authentication it is sufficient when one of the instances succeeds. The checks are executed in alphabetical order of the allowed instance names.
Naja auch dazu würde ich sagen, arbeitet richtig.
Erst Instanz
admin - kein allowedCommands keine Einschränkung
Zweite Instanz
fhem - allowedCommands definiert Einschränkung zieht.
Wenn es jetzt eine gäbe mit xantippe - und allowedCommands wäre nur get,set dann wäre würde nur noch set,get gehen. ?
Zitat von: Otto123 am 09 Mai 2019, 12:30:53
https://commandref.fhem.de/#allowedWorks as designed :)
Oder habe ich das Vorgehen falsch verstanden? Ich konnte aus dem letzten Post jetzt irgendwie kein Fehlverhalten erkennen?
Edit:
Ach so: Nach dem ich den Beitrag von Leon gelesen habe: Du warst noch als admin und nicht fhem angemeldet? Oder gar nicht angemeldet?
Säge nie an dem Ast auf dem Du gerade sitzt ... ;D ;D ;D
Ich bin/war als Benutzer "admin" angemeldet wenn ich einen zusätzlichen Benutzer anlege.
Wenn ich dann mit dieser Konfiguration
define allowed_admin allowed
setuuid allowed_admin 5cd3f57f-f33f-a13d-390e-e2cc8a57d61af39e
attr allowed_admin basicAuth SHA256:3320BBAD:pTdk671h9X9jnsT2RPNgWs/
attr allowed_admin room Einstellungen
attr allowed_admin validFor WEB
define allowed_fhem allowed
setuuid allowed_fhem 5cd3f5ef-f33f-a13d-5202-0a0238a922c3fede
attr allowed_fhem basicAuth SHA256:1B234E52:4zrRV2aPtaTiLY1thKBMt6o
attr allowed_fhem room Einstellungen
attr allowed_fhem validFor WEB,WEBphone,WEBtablet
attr allowed_fhem allowedCommands get,set,help,show
fhem starte habe ich keine Berechtigung als Benutzer admin.
Das entspräche dann der Aussage, die Berechtigungen werden in alphabetischer Reihenfolge vergeben, d.h. allowed_fhem überschreibt die Berechtigung "Full access" von allowed_admin.
Diese Logik ist aus meiner Sicht aber seltsam, denn es stellt sich die Frage, warum die Berechtigungen nicht per User gesetzt werden sondern per Instanz? Und diese Logik muss dann dazu führen, dass pro Instanz niemals mehr als
1 Benutzer angelegt werden sollte, weil ja jeder zusätzliche Benutzer die Berechtigungen "überschreibt" wenn er alphabetisch nachrangig ist.