Autor Thema: (gelöst) fhem: sudo visudo einschränken  (Gelesen 1809 mal)

Offline heikoh81

  • Sr. Member
  • ****
  • Beiträge: 551
(gelöst) fhem: sudo visudo einschränken
« am: 31 Mai 2018, 18:49:58 »
Hallo zusammen,

für bestimmte Aktionen auf meinem Raspi mit Raspbian Stretch benötigt mein FHEM root rechte, da z.B. ein Reload des Apache2 durchgeführt werden soll.

Es funktioniert, wenn ich in "sudo visudo" folgenden Eintrag habe:
fhem ALL=(ALL) NOPASSWD: ALL

Es funktioniert nicht, wenn ich die root-Rechte wie folgt einschränken möchte:
fhem    ALL=(root) NOPASSWD:/usr/sbin/service
oder
fhem    ALL=(ALL) NOPASSWD:/usr/sbin/service

Dann erhalte ich folgende Fehlermeldung im Log:
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

sudo: no tty present and no askpass program specified

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

sudo: no tty present and no askpass program specified
2018.05.31 18:44:43 3: Apache2-Seite wurde aktiviert: 000-default-le-ssl.conf:
2018.05.31 18:44:43 3: Apache2-Service wurde neu geladen:
Obwohl protokolliert wird, dass die Seite aktiviert und Apache2 neu geladen wurde, ist dies nicht der Fall.
Vielmehr ist miene Apache2-Konfiguration nicht verwendbar, also läuft irgendwas wohl schief.

Wo liegt mein Denkfehler?
In verschiedenen anderen Beiträgen, auch hier im fhem-Forum, wird genau diese Vorgehensweise beschrieben.

Vielen Dank für eure Hilfe,
viele Grüße,

Heiko
« Letzte Änderung: 12 Juni 2018, 15:38:57 von heikoh81 »

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16825
Antw:fhem: sudo visudo einschränken
« Antwort #1 am: 31 Mai 2018, 19:17:23 »
fhem    ALL = NOPASSWD:  /usr/sbin/service

So kann fhem im übrigen alle Dienste steuern.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
kein Support für cfg Editierer

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4289
Antw:fhem: sudo visudo einschränken
« Antwort #2 am: 31 Mai 2018, 19:27:31 »
Heiko, Du musst einmal als User fhem die Belehrung abnicken. In einer Shell. Grüße Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline heikoh81

  • Sr. Member
  • ****
  • Beiträge: 551
Antw:fhem: sudo visudo einschränken
« Antwort #3 am: 03 Juni 2018, 13:38:52 »
Danke für eure Antworten.

fhem    ALL = NOPASSWD:  /usr/sbin/service

So kann fhem im übrigen alle Dienste steuern.

Wird später noch weiter eingeschränkt. Habe es für Testzwecke so allgemein gehalten...

Heiko, Du musst einmal als User fhem die Belehrung abnicken. In einer Shell. Grüße Boris

Ok, habe ich probiert.
Bin ich als root in der Shell, passiert bei "su fhem" passiert nichts.
Bin ich als pi in der Shell, fragt mich das System nach einem Passwort - welches ich nie vergeben habe.
Habe hierzu diesen Thread gefunden: https://forum.fhem.de/index.php/topic,36120.0.html
Im Thread werden nun mehrere Optionen disktuiert, ich wollte vorab klären, was für mein Problem die richtige ist:

less /etc/passwd | grep fhemliefert
fhem:x:999:20::/opt/fhem:/bin/false

(1) Passwort für user fhem setzen?
(2) in /etc/passwd für fhem die Shell auf :/bin/bash ändern?
Wenn (2), kann ich nach einmaligem Abnicken dann die Shell wieder auf /bin/false setzen, oder muss das auf /bin/bash bleiben, damit fhem die Systembefehle absetzen kann?

Viele Grüße,
Heiko

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4289
Antw:fhem: sudo visudo einschränken
« Antwort #4 am: 03 Juni 2018, 17:12:21 »
Hallo,

/etc/passwd in Ruhe lassen und vom root-Account aus mit

su fhem -s /bin/bash
zum fhem-Account wechseln. Dann irgendwas mit sudo ausführen, die Belehrung abnicken, und mit exit wieder raus.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline heikoh81

  • Sr. Member
  • ****
  • Beiträge: 551
Antw:fhem: sudo visudo einschränken
« Antwort #5 am: 04 Juni 2018, 21:45:38 »
Das funktioniert leider noch nicht.

Ich habe die Shell in Raspian geöffnet und bin erstmal user "pi".
Dann "sudo su" eingegeben, ich bin user root.

Wenn ich nun den von dir angegebenen Befehl eingebe, kommt eine Passwort-Abfrage (nicht in der Shell, sondern vom Raspian-Dektop "Authentication is required"), bei der ich nur die Benutzer "pi" oder "root" auswählen kann.
Ich habe für beide das Passwort eingegeben und OK geklickt. Der Befehl aus der Shell wird schon ausgeführt.
Aber in FHEM erscheint noch immer diesselbe Fehlermeldung im Log, wenn ich fhem dann denselben Befehl ausführen lasse.

Viele Grüße,
Heiko

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 4479
Antw:fhem: sudo visudo einschränken
« Antwort #6 am: 06 Juni 2018, 08:12:10 »
Baue Dir beim nächsten mal bitte ein System ohne Grafische Oberfläche. Bei mir z.B: funzt es...

Du Öffnest eine Konsole, bist also pi. Wirst dann mit "sudo su" root (wobei ich immer "sudo -i" verwende). Wenn Du jetzt "su fhem -s /bin/bash" öffnest, kommt ein grafisches Fenster???

Du bist Dir sicher, in der gleichen Konsole zu sein??
Was für aliase hast Du?
alias
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10490
    • Otto's Technik Blog
Antw:fhem: sudo visudo einschränken
« Antwort #7 am: 06 Juni 2018, 09:40:23 »
Heiko, Du musst einmal als User fhem die Belehrung abnicken. In einer Shell. Grüße Boris
Hallo Boris,

wirklich? Ist das System abhängig?
Musste ich noch nicht machen. Ich richte meine Pi  Systeme so ein, damit funktioniert das ohne Umschweife.

Aber wie Werner empfiehlt: nur -lite- ohne graphischen Desktop.

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4289
Antw:fhem: sudo visudo einschränken
« Antwort #8 am: 07 Juni 2018, 18:23:34 »
Mannomann. Jetzt bin ich seit Tagen mal wieder an meinem Rechner, habe 30 Sekunden gegoogelt, und die folgende Lösung aufgetrieben:

In die Datei

/etc/sudoers.d/privacy
die Zeile

Defaults        lecture = never
reinschreiben. Test ist dem Verwender überlassen. Ich hoffe, dass das Thema damit erledigt ist. Ansonsten hilft

man sudoers
in einer Shell weiter.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline JoWiemann

  • Tester
  • Hero Member
  • ****
  • Beiträge: 2463
Antw:fhem: sudo visudo einschränken
« Antwort #9 am: 07 Juni 2018, 19:39:33 »
Wobei ich letztens noch einmal festgestellt habe, das Google uns sehr unterschiedlich behandelt. Bei einem Bekannten, der wenig im IT Bereich googelt, habe ich die ersten Seiten ganz andere Treffer gehabt. Erst nachdem ich mich mit meinem Account angemeldet hatte war mir Google wieder gnädig...


Gesendet von iPhone mit Tapatalk

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Offline heikoh81

  • Sr. Member
  • ****
  • Beiträge: 551
Antw:fhem: sudo visudo einschränken
« Antwort #10 am: 07 Juni 2018, 22:07:35 »
Danke für eure Antworten.

Mannomann. Jetzt bin ich seit Tagen mal wieder an meinem Rechner, habe 30 Sekunden gegoogelt, und die folgende Lösung aufgetrieben:
Naja, ich habe wesentlich länger erfolglos gegoogelt, bevor ich hier gepostet habe. Wenn man weiß, wonach man sucht, findet man die Lösung sicher auch schneller.

Zitat
In die Datei
/etc/sudoers.d/privacydie Zeile
Defaults        lecture = neverreinschreiben. Test ist dem Verwender überlassen. Ich hoffe, dass das Thema damit erledigt ist.

Habe ich gemacht, Test morgen (Haussteuerung kann ich zu dieser Zeit nicht neu starten, da um diese Zeit viele Timer anstehen).

Baue Dir beim nächsten mal bitte ein System ohne Grafische Oberfläche. Bei mir z.B: funzt es...
Du Öffnest eine Konsole, bist also pi. Wirst dann mit "sudo su" root (wobei ich immer "sudo -i" verwende). Wenn Du jetzt "su fhem -s /bin/bash" öffnest, kommt ein grafisches Fenster???
Du bist Dir sicher, in der gleichen Konsole zu sein??
Was für aliase hast Du?
alias

Ich habe auch headless-raspis im Einsatz, aber grundsätzlich muss es ja auch mit grafischer Oberfläche funktionieren.
Ich habe schon meine Gründe für den grafischen Desktop: Der Raspi 3b+ hat genug Leistung, um neben fhem auch noch als "management station" für meine Headless Raspis zu dienen.
Auf dem Tablet geht ssh eher schlecht als recht und ein Notebook oder PC möchte ich dafür nicht hochfahren.

Alias als user pi liefert:
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias ls='ls --color=auto'
Alias als user root liefert nichts.

Viele Grüße,
Heiko

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 4479
Antw:fhem: sudo visudo einschränken
« Antwort #11 am: 07 Juni 2018, 22:18:10 »
Leider unterscheiden sich die Distris mit/ohne Grafischer Oberfläche gerade in solchen Details ....

Und bei den aktuellen PIs würde ich für Grafik eher noch einen Pi zulegen
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline heikoh81

  • Sr. Member
  • ****
  • Beiträge: 551
Antw:fhem: sudo visudo einschränken
« Antwort #12 am: 08 Juni 2018, 11:58:09 »
Zitat
In die Datei
/etc/sudoers.d/privacydie Zeile
Defaults        lecture = neverreinschreiben.

Funktioniert zwar für "shutdown -r now", nicht aber für "Service apache2 reload".
Folgenden Eintrag habe ich in visudo:

fhem    ALL=(ALL) NOPASSWD:/sbin/shutdown,/usr/sbin/a2ensite,/usr/sbin/a2dissite,/usr/sbin/service apache2 reload

Log:
sudo: no tty present and no askpass program specified
Can't ignore signal CHLD, forcing to default.
2018.06.08 11:55:06 3: Apache2-Seite wurde aktiviert: 000-default-le-ssl.conf: Site 000-default-le-ssl already enabled
2018.06.08 11:55:06 3: Apache2-Service wurde neu geladen:

Mit diesem visudo funktioniert alles auch ohne Eintrag in /etc/sudoers.d/privacy:
fhem ALL=(ALL) NOPASSWD: ALL

Viele Grüße,
Heiko

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10490
    • Otto's Technik Blog
Antw:fhem: sudo visudo einschränken
« Antwort #13 am: 08 Juni 2018, 12:33:07 »
Hallo Heiko,

du rufst dann aber auch exakt diese Zeile auf?sudo /usr/sbin/service apache2 reload
Mit Service apache2 reload wird es wirklich nicht gehen. So mein Verständnis  :D was nicht richtig sein muss.

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266

Offline heikoh81

  • Sr. Member
  • ****
  • Beiträge: 551
Antw:fhem: sudo visudo einschränken
« Antwort #14 am: 08 Juni 2018, 12:38:32 »
In fhem rufe ich dann tatsächlich nur "sudo service apache2 reload" auf.
Nachfolgend lässt mich sudo visudo aber gar nicht speichern und weißt mich auf einen Fehler hin:
fhem    ALL=(ALL) NOPASSWD: service apache2 reload
« Letzte Änderung: 08 Juni 2018, 12:42:18 von heikoh81 »

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10490
    • Otto's Technik Blog
Antw:fhem: sudo visudo einschränken
« Antwort #15 am: 08 Juni 2018, 12:46:29 »
Das ist richtig weil es falsch ist.  :D
Warum drehst Du an dem Knopf und veränderst nicht einfach Deinen Aufruf?
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266

Offline JoWiemann

  • Tester
  • Hero Member
  • ****
  • Beiträge: 2463
Antw:fhem: sudo visudo einschränken
« Antwort #16 am: 08 Juni 2018, 13:02:48 »
In fhem rufe ich dann tatsächlich nur "sudo service apache2 reload" auf.
Nachfolgend lässt mich sudo visudo aber gar nicht speichern und weißt mich auf einen Fehler hin:
fhem    ALL=(ALL) NOPASSWD: service apache2 reload

Sudoers erwartet immer den vollständigen Pfad.

Beispiel

nopasswd: /etc/init.d  -> für alles im Verzeichnis
nopasswd: /usr/sbin/service * -> für alle Parameter
nopasswd: /usr/sbin/service apache2 * -> für alle Parameter
nopasswd: /usr/sbin/service apache2 reload -> genau nur hierfür

Grüße Jörg

https://kofler.info/sudo-ohne-passwort/
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 4479
Antw:fhem: sudo visudo einschränken
« Antwort #17 am: 08 Juni 2018, 13:56:33 »
Und zu Deinen Beitrag 4/5 Beträge vorher:
Zitat
fhem ALL=(ALL) NOPASSWD: ALL

Damit darf FHEM ALLES, was auch root darf. Da FHEM selber relativ offen ist (von Grundgedanken her), ist damit Dein Server nicht mehr Sicher!
Es ist als ob fhem als root läuft

Kurzfassung: NICHT verwenden!
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline heikoh81

  • Sr. Member
  • ****
  • Beiträge: 551
Antw:fhem: sudo visudo einschränken
« Antwort #18 am: 08 Juni 2018, 14:33:19 »
Deshalb will ich die root-Rechte ja stark einschränken.
Aber auch so funktioniert es wieder nicht:

fhem ALL=(ALL) NOPASSWD:/usr/sbin/service apache2 reload,/usr/sbin/a2ensite *,/usr/sbin/a2dissite *

Das sind die Funktionen in meiner myUtils:
######## Apache2 Enable Site ############
#26.04.2015
sub
fhema2ensite
{
 my $seitenname = shift;
 my $ret = "";
 $ret .= qx(sudo /usr/sbin/a2ensite $seitenname);
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string
 Log 3, "Apache2-Seite wurde aktiviert: $seitenname: $ret";
}

######## Apache2 Disable Site ############
#26.04.2015
sub
fhema2dissite
{
 my $seitenname = shift;
 my $ret = "";
 $ret .= qx(sudo /usr/sbin/a2dissite $seitenname);
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string
 Log 3, "Apache2-Seite wurde deaktiviert: $seitenname: $ret";
}

######## Apache2 Reload ############
#27.04.2015
sub
fhema2reload
{
 my $ret = "";
 $ret .= qx(sudo /usr/sbin/service apache2 reload);
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string
 Log 3, "Apache2-Service wurde neu geladen: $ret";
}

Liefert im Log:
sudo: no tty present and no askpass program specified
Can't ignore signal CHLD, forcing to default.
2018.06.08 14:29:42 3: Apache2-Seite wurde aktiviert: 000-default-le-ssl.conf: Site 000-default-le-ssl already enabled
2018.06.08 14:29:42 3: Apache2-Service wurde neu geladen:

Und die Apache-Konfiguration funktioniert danach nicht mehr.

Lasse ich das "sudo" in meinen 3 oben gezeigten Funktionen weg, steht das im Log:
sudo: no tty present and no askpass program specified
Can't ignore signal CHLD, forcing to default.
2018.06.08 14:35:24 3: Apache2-Seite wurde aktiviert: 000-default-le-ssl.conf: Site 000-default-le-ssl already enabled
Failed to reload apache2.service: Interactive authentication required.
See system logs and 'systemctl status apache2.service' for details.
2018.06.08 14:35:24 3: Apache2-Service wurde neu geladen:
« Letzte Änderung: 08 Juni 2018, 14:36:56 von heikoh81 »

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 4479
Antw:fhem: sudo visudo einschränken
« Antwort #19 am: 08 Juni 2018, 14:43:01 »
Und die Apache-Konfiguration funktioniert danach nicht mehr.
Funktioniert es den  nach einem manellen reset wieder?
Funktioniert es als User FHEM?

Siehe auch:
https://forum.fhem.de/index.php/topic,88282.msg808034.html#msg808034
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline heikoh81

  • Sr. Member
  • ****
  • Beiträge: 551
Antw:fhem: sudo visudo einschränken
« Antwort #20 am: 08 Juni 2018, 14:49:05 »
Die Apache-Konfiguration funktioniert dann wieder, wenn ich in sudo visudo folgende Zeile aktiviere und meinen Test wieder auskommentiere:
fhem ALL=(ALL) NOPASSWD: ALL
Dadurch bastelt fhem mir wieder eine korrekte Default-Datei zusammen und aktiviert diese.

Immerhin, der Befehl von Boris
root@fhem:~# su fhem -s /bin/bash
liefert jetzt mehr als das letzte Mal und führt nun nicht mehr zu dem Popup auf dem Bildschirm, sondern im Terminal:

fhem@fhem:/root$ /usr/sbin/service apache2 reload
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to reload 'apache2.service'.
Multiple identities can be used for authentication:
 1.  ,,, (pi)
 2.  root
Choose identity to authenticate as (1-2): 2
Password:
==== AUTHENTICATION COMPLETE ===

Allerdings merkt sich das System meine korrekte Authentifizierung nicht.
Führe ich den Befehl nochmal in der Shell aus, kommt dieselbe Abfrage.

"sudo visudo" als Benutzer fhem führt übrigens zu einer Passwort-Abfrage.
Ich habe aber nie eins für Benutzer fhem vergeben.
Könnte es doch notwendig sein, ein Passwort für Benutzer fhem zu vergeben?

Viele Grüße,
Heiko
« Letzte Änderung: 08 Juni 2018, 14:52:10 von heikoh81 »

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 4479
Antw:fhem: sudo visudo einschränken
« Antwort #21 am: 08 Juni 2018, 15:23:44 »
Du hast ein "komisches" System ....

Kann Dir nur erst wieder am Montag helfen ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline heikoh81

  • Sr. Member
  • ****
  • Beiträge: 551
Antw:fhem: sudo visudo einschränken
« Antwort #22 am: 08 Juni 2018, 16:14:13 »
Danke nochmal an alle für die Hilfe bisher.
Vielleicht bekommen wir es ja noch gemeinsam hin, so dass fhem nicht vollumfängliche root-Rechte besitzt.

Mein System ist eigentlich nicht komisch.
Es ist ein Standard Raspbian Stretch mit Standard-Desktop, frisch installiert ca. Sommer 2017. Kernel-Update wegen Raspi3b+ irgendwann im März/April 2018, sonst sind alle Pakete auf dem neuesten Stand gehalten.
Es ist nur fhem, Apache2, fail2ban, Samba für einen USB-Stick und OpenVPN installiert, sonst sind keine Veränderungen vorgenommen.
« Letzte Änderung: 08 Juni 2018, 16:15:48 von heikoh81 »

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4289
Antw:fhem: sudo visudo einschränken
« Antwort #23 am: 08 Juni 2018, 17:07:19 »
Nach sudo fhem bash mal mit whoami schauen wer Du bist. Oder den Befehl direkt mit sudo ausführen. Manpages von su und sudo studieren.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10490
    • Otto's Technik Blog
Antw:fhem: sudo visudo einschränken
« Antwort #24 am: 08 Juni 2018, 20:14:03 »
Hallo Heiko,

ich kann mich nur wiederholen, so wie ich es hier aufgeschrieben habe funktioniert es auf einem raspbian stretch lite (auch wenn es schon ein Jahr alt ist) aus dem "Stand"!

Dort steht auch drin wie mit sudoers auf dem pi normalerweise umgegangen wird, ohne manipulation der Original /etc/sudoers mit visudo.

Da wird kein user fhem manipuliert, da ist kein sudo visudo als fhem nötig (was sowieso totaler quatsch ist), da wird kein passwort für fhem nötig, da muss auch nicht einmalig ein Passwort abgefragt werden.

Zitat
Die Apache-Konfiguration funktioniert dann wieder, wenn ich in sudo visudo folgende Zeile aktiviere und meinen Test wieder auskommentiere:
Code: [Auswählen]
fhem ALL=(ALL) NOPASSWD: ALL
Dadurch bastelt fhem mir wieder eine korrekte Default-Datei zusammen und aktiviert diese.

Die beiden Sätze verstehe ich überhaupt nicht!?  :-[

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266

Offline heikoh81

  • Sr. Member
  • ****
  • Beiträge: 551
Antw:fhem: sudo visudo einschränken
« Antwort #25 am: 08 Juni 2018, 20:55:47 »
Da wird kein user fhem manipuliert, da ist kein sudo visudo als fhem nötig (was sowieso totaler quatsch ist), da wird kein passwort für fhem nötig, da muss auch nicht einmalig ein Passwort abgefragt werden.

Den Weg von Ottos Technik Blog werde ich morgen probieren und dann berichten.

Zitat
Die beiden Sätze verstehe ich überhaupt nicht!?  :-[
Mein fhem bastelt in Abhängigkeit bestimmter Checkboxen (On/Off) aus unzähligen .txt-Dateien mittels cat-Befehl eine Gesamt-TXT-Datei zusammen, die dann die Default-Config für Apache ist.
Ich verwende dies, um einen ReverseProxy für meine IPCams zu konfigurieren, d.h. wenn wir daheim sind, sind die IPCams Apache-Seitig schon mal nicht mehr zu erreichen. Die Innenkameras werden zusätzlich auch per Funksteckdose stromlos, aber wenn die Rolläden unten sind, schaue ich ggf. gern auch mal nach, ob draußen alles in Ordnung ist :-) (ich bin Datenschutz-konform! Alle Kameras sind selbstverständlich nur auf mein Eigentum und Grundstück gerichtet, Hinweisschilder auf Videoüberwachung gemäß DIN sind an der Haustür vorhanden und eine Speicherung findet gar nicht erst statt...).

Wenn fhem vollumfängliche root-Rechte hat, dann klappt das.
Wenn die root-Rechte eingeschränkt werden, klappt das nicht mehr.

Wo ich das jetzt so schreibe, habe ich auch die Datei-Rechte nochmal geprüft.
Der User fhem darf sowohl auf die Quell-Textdateien als auch die 000-default-le-ssl.conf zugreifen.

Natürlich ist der Zugriff durch FHEM auf die Apache-Konfig ein Sicherheitsrisiko (da über FHEM jeder beliebige Befehl in die Konfig geschrieben werden könnte, aber ich habe keinen anderen Weg gefunden, den Zugriff auf die Kameras anders dynamisch zu steuern...

Viele Grüße,
Heiko
« Letzte Änderung: 08 Juni 2018, 20:58:12 von heikoh81 »

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10490
    • Otto's Technik Blog
Antw:fhem: sudo visudo einschränken
« Antwort #26 am: 08 Juni 2018, 21:31:35 »
Dafür wäre dann wichtig, dass Deine /etc/sudoers im Originalzustand ist.
Ich habe mal eine Jungfrau vom aktuellen, frischen Pi angehangen.  ;)

Bitte mit sudo visudo vergleichen und eventuell korrigieren!

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266

Offline heikoh81

  • Sr. Member
  • ****
  • Beiträge: 551
Antw:fhem: sudo visudo einschränken
« Antwort #27 am: 12 Juni 2018, 12:37:08 »
Hallo Otto,

ich habe den jungfräulichen Zustand von "sudo visudo" wiederhergestellt (bei mir leicht möglich, da ich meine Einträge immer Kennzeichne und Originaleinträge nicht lösche, sondern mit ##### auskommentiere).

Danach wie unter dem Link beschrieben die Datei "/etc/sudoers.d/011_fhem-nopasswd" angelegt mit chown 0440 und folgendem Inhalt:
fhem ALL=(ALL) NOPASSWD: /sbin/reboot, /sbin/shutdown, /sbin/halt, /usr/sbin/service apache2 reload, /usr/sbin/a2ensite *, /usr/sbin/a2dissite *

Der Reboot funktioniert schon mal!

Apache2 neu starten macht aber weiterhin Probleme, ich erhalte folgende Fehlermeldung:
sudo: no tty present and no askpass program specified
Can't ignore signal CHLD, forcing to default.
2018.06.12 12:29:32 3: Apache2-Seite wurde aktiviert: 000-default-le-ssl.conf: Site 000-default-le-ssl already enabled
2018.06.12 12:29:32 3: Apache2-Service wurde neu geladen:

Ist meine Syntax bzgl. "service apache2 reload" oder "a2ensite"/"a2dissite" noch falsch?



"whoami" nach "su fhem -s /bin/bash" liefert übrigens "fhem".

Viele Grüße,
Heiko
« Letzte Änderung: 12 Juni 2018, 12:41:40 von heikoh81 »

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10490
    • Otto's Technik Blog
Antw:fhem: sudo visudo einschränken
« Antwort #28 am: 12 Juni 2018, 13:38:22 »
Moin Heiko,

ich habe das erstmal mit ser2net probiert, da funktionierte es sofort ohne Probleme.
Inhalt der /etc/sudoers.d/11_fhem-nopasswd
fhem ALL=(ALL) NOPASSWD: /sbin/reboot, /sbin/shutdown, /sbin/halt, /usr/sbin/service ser2net reload, /usr/sbin/service apache2 reload
Mit dem FHEM Kommando
"sudo /usr/sbin/service ser2net reload" habe ich keinen Eintrag im Log und der status liefert mir die Info das neu geladen wurde.
Jun 12 13:31:39 mymachine systemd[1]: Reloading LSB: Allows network connections
Jun 12 13:31:39 mymachine ser2net[541]: Got SIGHUP, re-reading configuration
Jun 12 13:31:39 mymachine ser2net[1625]: Reloading Serial port to network proxy:
Jun 12 13:31:39 mymachine systemd[1]: Reloaded LSB: Allows network connectio


Dann habe ich apache2 installiert, "sudo /usr/sbin/service apache2 reload"verhält sich genauso:
Jun 12 13:21:43 mymachine systemd[1]: Starting The Apache HTTP Server...
Jun 12 13:21:43 mymachine systemd[1]: Started The Apache HTTP Server.
Jun 12 13:36:04 mymachine systemd[1]: Reloading The Apache HTTP Server.
Jun 12 13:36:04 mymachine systemd[1]: Reloaded The Apache HTTP Server.
lines 1-14/14 (END)

Der Befehl {qx(sudo /usr/sbin/service apache2 reload)}in der FHEM Kommandozeile funktioniert genauso. Du rufst es ja damit aus deiner 99_myUtils.pm auf

Gruß Otto
« Letzte Änderung: 12 Juni 2018, 14:12:46 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266

Offline heikoh81

  • Sr. Member
  • ****
  • Beiträge: 551
Antw:fhem: sudo visudo einschränken
« Antwort #29 am: 12 Juni 2018, 14:05:41 »
Ich habe fhem ganz normal wie in der Wiki beschrieben aus dem Repository installiert.
Gerade habe ich für den Benutzer fhem ein Passwort vergeben. Auch dann funktioniert es nicht.
Wenn ich als Benutzer fhem in die Bash gehe, wird fhem auch nicht als Benutzer angeboten, weiterhin nur pi und root.

Wenn es in sudo visudo mit
fhem ALL=(ALL) NOPASSWD: ALL
funktioniert, wieso funktioniert es dann mit der Einschränkung nicht?

Viele Grüße,
Heiko

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10490
    • Otto's Technik Blog
Antw:fhem: sudo visudo einschränken
« Antwort #30 am: 12 Juni 2018, 14:25:14 »
Hi,

ich kann es nicht sagen, an dem was hier hin und her geschrieben wird ist nichts verkehrt - höchstens lückenhaft. Und in einer dieser Lücken wird sich ein Fehler verbergen.

Auch der Befehl so in der FHEM Kommandozeile funktioniert nicht?

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266

Offline heikoh81

  • Sr. Member
  • ****
  • Beiträge: 551
Antw:fhem: sudo visudo einschränken
« Antwort #31 am: 12 Juni 2018, 15:38:46 »
Ich denke, jetzt habe ich das Problem gefunden, und es lag einfach daran, dass ich noch den cat-Befehl als root aufgerufen hatte, um die Apache2-Konfigdatei dynamisch zu erzeugen. Dies hatte ich übersehen.

Mit dieser Zeile funktioniert es nun wie gewünscht:
fhem    ALL=(ALL) NOPASSWD:/sbin/shutdown, /usr/sbin/a2ensite, /usr/sbin/service apache2 reload, /bin/cat

Nochmal vielen Dank an alle für die Mithilfe.

Viele Grüße,
Heiko