Pi-Hole kann sudo nicht ausführen... WebInterface speichert keine Einstellugen

Moin.
Hatte Pi-Hole bisher alleinig auf auf einem Pi mit Apache2 als Webserver am laufen. Alles ohne Probleme.

Als Vorweihnachtsgeschenk habe ich mir einen neuen Server-Rechner gegönnt und alles dorthin umgezogen.

fhem-Hausautomatisierung (eigener Webserver:8083), Nextcloud (Apache:80/443), iobroker (eigener Webserver:8081), Pi-Hole (Apache:80/admin mit blocking)

Installiert wurde über DietPi-Software.
Pi-Hole (FTL und Co.) läuft einwandfrei. DNS funktioniert und es wird auch Werbung geblock.
Ändere ich jetzt aber etwas an den Einstellungen im WebInterface werden diese nicht gespeichert.

Apache error-log:

AH01071: Got error 'PHP message: PHP Warning:  Executing sudo pihole status web failed. in /var/www/html/admin/scripts/pi-hole/php/func.php on line 150', referer: http://192.168.1.5/admin/index.php

Status im WebInterface ist "Unknown".

sudoers, passwd, Dateiberechtigungen, Ordner, Apache-Config (für Pi-Hole): Alles das gleiche wie auf dem Pi wo Pi-Hole einwandfrei funktioniert hat.

DnsCrypt ist installiert....

root@fhem-server:~# uname -a
Linux fhem-server 5.16.0-rc4-amd64 #1 SMP PREEMPT Debian 5.16~rc4-1~exp1 (2021-12-07) x86_64 GNU/Linux
root@fhem-server:~# pihole status web
1
root@fhem-server:~# cat /etc/sudoers.d/pihole
# Pi-hole: A black hole for Internet advertisements
# (c) 2017 Pi-hole, LLC (https://pi-hole.net)
# Network-wide ad blocking via your own hardware.
#
# Allows the WebUI to use Pi-hole commands
#
# This file is copyright under the latest version of the EUPL.
# Please see LICENSE file for your rights under this license.
#
www-data ALL=NOPASSWD: /usr/local/bin/pihole
root@fhem-server:~# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:101:101:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
systemd-network:x:102:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:103:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
dietpi:x:1000:1000::/home/dietpi:/bin/bash
sshd:x:104:65534::/run/sshd:/usr/sbin/nologin
mysql:x:105:112:MySQL Server,,,:/nonexistent:/bin/false
redis:x:106:113::/var/lib/redis:/usr/sbin/nologin
messagebus:x:107:114::/nonexistent:/usr/sbin/nologin
lightdm:x:108:115:Light Display Manager:/var/lib/lightdm:/bin/false
minidlna:x:109:1000:MiniDLNA server,,,:/var/lib/minidlna:/usr/sbin/nologin
pihole:x:998:998::/home/pihole:/usr/sbin/nologin
fhem:x:997:20::/opt/fhem:/bin/bash
iobroker:x:1001:1001::/home/iobroker:/usr/sbin/nologin
_rpc:x:110:65534::/run/rpcbind:/usr/sbin/nologin
statd:x:111:65534::/var/lib/nfs:/usr/sbin/nologin
root@fhem-server:~# groups www-data
www-data : www-data redis pihole
root@fhem-server:~# cat /etc/pihole/setupVars.conf
WEBPASSWORD=___masked___
ADMIN_EMAIL=
WEBUIBOXEDLAYOUT=boxed
WEBTHEME=default-darker
DNSMASQ_LISTENING=single
DNSSEC=true
REV_SERVER=false
BLOCKING_ENABLED=true
PIHOLE_INTERFACE=eth0
IPV4_ADDRESS=192.168.1.5/24
IPV6_ADDRESS=2a02:8108:95bf:e75e:aaa1:59ff:fe90:cc68
PIHOLE_DNS_1=127.0.0.1#5300
PIHOLE_DNS_2=::1#5300
QUERY_LOGGING=true
INSTALL_WEB_SERVER=false
INSTALL_WEB_INTERFACE=true
LIGHTTPD_ENABLED=false
CACHE_SIZE=10000
DNS_FQDN_REQUIRED=true
DNS_BOGUS_PRIV=true

Pi-Hole Debug-Log

Es muss ja mit irgendwelchen Berechtigungen zu tun haben... Da ich aber jetzt mir alles bekannte drei mal durch habe, bin ich mit meinem Latein leider am Ende.

Grüße^^

Vielen Dank für deinen Report. Um sicherzugehen, Apache2 läuft nun mit PHP-FPM, oder?

journalctl -u php7.4-fpm

Hat PHP-FPM noch weitere logs?

cat /var/log/php7.4-fpm.log

Generell funktioniert das speichern von Einstellung bei einem Test hier. Was bekannt ist (und für die nächste Version behoben), ist eine Fehlermeldung wenn man versucht Teleporter Einstellungen zu importieren: Unable to restore teleporter backup - fresh install, no funky changes made

Das kannst du so beheben:

curl -sSf 'https://raw.githubusercontent.com/MichaIng/DietPi/dev/.conf/dps_93/apache.pihole.conf' -o /etc/apache2/sites-enabled/dietpi-pihole.conf
systemctl restart apache2

Welche Debian Version nutzt du? Linux 5.16 ist ja nur in der experimental Suite vorhanden, von welcher ich strengstens abraten würde. Das ist ja noch weniger getestet als die sid Suite und die noch besser getestete bookworm ist gerade mal seit ein paar Monaten testing. Da schließt sich dann die Frage an welche PHP version du nutzt:

php -v

Wobei dietpi-software auch auf dem (noch nicht vollständig unterstützten) Bookworm noch PHP7.4 installiert, bis PHP8.1 in dieser Suite zum Standard promoted wurde und die fehlenden Redis und APCu Module vorhanden sind.

1 Like

Vielen Dank für deine schnelle Antwort.

Vielen Dank für deinen Report. Um sicherzugehen, Apache2 läuft nun mit PHP-FPM, oder?

Ja.

root@fhem-server:~# journalctl -u php7.4-fpm
-- Journal begins at Sun 2021-12-19 17:45:07 CET, ends at Sun 2021-12-19 18:51:43 CET. --
Dez 19 17:45:08 fhem-server systemd[1]: Starting The PHP 7.4 FastCGI Process Manager...
Dez 19 17:45:08 fhem-server systemd[1]: Started The PHP 7.4 FastCGI Process Manager.
Dez 19 17:54:25 fhem-server sudo[4904]: www-data : no tty ; PWD=/var/www/html/admin ; USER=ro
ot ; COMMAND=/usr/local/bin/pihole status web
Dez 19 17:54:27 fhem-server sudo[4918]: www-data : no tty ; PWD=/var/www/html/admin ; USER=ro
ot ; COMMAND=/usr/local/bin/pihole status web

..., ist eine Fehlermeldung wenn man versucht Teleporter Einstellungen zu importieren...

nutze ich nicht... wird ja aber sicherlich trotzdem bald gepatcht :blush:

Welche Debian Version nutzt du? Linux 5.16 ist ja nur in der experimental Suite vorhanden, von welcher ich strengstens abraten würde. Das ist ja noch weniger getestet als die sid Suite und die noch besser getestete bookworm ist gerade mal seit ein paar Monaten testing . Da schließt sich dann die Frage an welche PHP version du nutzt:

Debian Bullseye. Den 5.16 Kernel nutze ich wegen einem Grafik-Treiber-Problem in der 5.09 - 5.10. Habe einen core i3 10305T mit UHD 630^^

root@fhem-server:~# php -v
PHP 7.4.25 (cli) (built: Oct 23 2021 21:53:50) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.25, Copyright (c), by Zend Technologies

Bezüglich "www-data : no tty" aus dem Log... ich hatte es auch schon mal mit /bin/bash in der passwd probiert... leider ohne Erfolg... oder hatte ich den reboot vergessen?

Grüße^^

Ich empfehle dir das Linux image von Bullseye backports:

apt install --reinstall --allow-downgrades linux-image-amd64/bullseye-backports

experimental ist generell nicht geeignet, außer für isolierte Entwicklung- oder Testsysteme: DebianExperimental - Debian Wiki

Users shouldn't be using packages from here, because they can be dangerous and harmful even for the most experienced people.

Das mit no tty ist in der Tat etwas was ich hier nicht sehe:

Dec 19 18:41:56 VM-Bullseye sudo[17177]: www-data : PWD=/var/www/html/admin ; USER=root ; COMMAND=/usr/local/bin/pihole status web

Ich meine da alles innerhalb der services läuft, sollte ein TTY (interaktive Konsole) weder vorhanden noch nötig sein, aber evtl. wird das irgendwie indirekt gebraucht.

Kannst du mal das versuchen:

sudo -su www-data
# und dann in der Subshell
sudo pihole status web
# um zurückzukehren
exit

EDIT: sudo scheint Infos zur TTY nur dann zu loggen, wenn nach einem Passwort gefragt wird. Aber dieses sollte mit /etc/sudoers.d/pihole ja gar nicht abgefragt werden. Kannst du mal das folgende zeigen?

cat /etc/sudoers

Ich empfehle dir das Linux image von Bullseye backports:

Das schaue ich mir die Tage mal an^^

Kannst du mal das versuchen:

www-data@fhem-server:/root$ sudo pihole status web
1
www-data@fhem-server:/root$ exit
exit
root@fhem-server:~#

bei der fehlersuche wollte er an dieser stelle immer ein passwort von mir haben... plötzlich nicht mehr...

root@fhem-server:~# cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Defaults        requiretty
Defaults:%dialout !requiretty
Defaults:fhem   !requiretty

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL
fhem    ALL=(ALL) NOPASSWD: ALL
fhem    ALL=(ALL) NOPASSWD:SETENV: /usr/bin/cpanm *

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "@include" directives:

#includedir /etc/sudoers.d

^^an dieser stelle hab ich es auch schon mit einem "@" wie darüber beschrieben versucht.. in der man steht "#".

Grüße^^

Das schaut mir nach einer migrierten /etc/sudoers aus, beispielsweise von einem Buster => Bullseye upgrade, oder erstellt als Teil deiner Setup Skripte oder so? Da ist dieses requiretty enthalten, was in Bullseye standardmäßig nicht vorhanden ist (auch in Buster nicht). requiretty sorgt dafür dass für sudo eine Konsole benötigt wird (offensichtlich unabhängig davon ob ein Password abgefragt wird), welche in Serviceumgebungen nicht existiert.

Generell empfehle ich diese Datei unangetastet zu lassen und eigene sudoers Einstellungen als separate Datei zu erstellen:

echo -e 'fhem ALL=(ALL) NOPASSWD: ALL\nfhem ALL=(ALL) NOPASSWD:SETENV: /usr/bin/cpanm *' > /etc/sudoers.d/fhem

Das hat den Vorteil dass im Falle von einem Upgrade, insbesondere Distributionsupgrades, die neuen Standarddateien automatisch installiert werden. Sobald eine Datei in /etc manuell geändert wurde, wird APT diese nicht mehr automatisch überschreiben.

Möglicherweise gibt es bereits eine Paketversion der Datei die du nach obigem nutzen kannst:

mv /etc/sudoers.dpkg-dist /etc/sudoers

Falls nicht, hier ist das Bullseye-Original:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "@include" directives:

@includedir /etc/sudoers.d

Wie du siehst mit @ anstatt #, was die neuere Syntax ist, wobei noch beides funktioniert, jedoch vor allem ohne requiretty.

EDIT: Falls du aus Sicherheitsgründen oder so requiretty weiter nutzen möchtest, muss Defaults:www-data !requiretty als weitere Ausnahme hinzugefügt werden.

Das schaut mir nach einer migrierten /etc/sudoers aus, beispielsweise von einem Buster => Bullseye upgrade, oder erstellt als Teil deiner Setup Skripte oder so? Da ist dieses requiretty enthalten, was in Bullseye standardmäßig nicht vorhanden ist (auch in Buster nicht). requiretty sorgt dafür dass für sudo eine Konsole benötigt wird (offensichtlich unabhängig davon ob ein Password abgefragt wird), welche in Serviceumgebungen nicht existiert.

Ähm... ja... Schande über mein Haupt.

Generell empfehle ich diese Datei unangetastet zu lassen und eigene sudoers Einstellungen als separate Datei zu erstellen:

erledigt.

Falls nicht, hier ist das Bullseye-Original:

erledigt...

EDIT: Falls du aus Sicherheitsgründen oder so requiretty weiter nutzen möchtest, muss Defaults:www-data !requiretty als weitere Ausnahme hinzugefügt werden.

getestet: brauche ich tatsächlich nicht.

Und was soll ich sagen... Läuft.
Da soll so ein n4pp3l wie ich drauf kommen.

Vielen vielen Dank dafür. Gute Nacht.

Super, dir ebenfalls noch einen schönen Abend und frohe Feiertage :christmas_tree: :santa: :fireworks:.

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.