Hi, dnsmasq Version ist 2.78-lp150.1.11 aus dem openSUSE-Leap 15.0 Repo. nach dem Update auf Leap 15.0 sehe ich folgendes Problem: failed to execute /usr/local/bin/logdnsmasq.sh: Permission denied in dnsmasq.conf : dhcp-script=/usr/local/bin/logdnsmasq.sh Das Script ist ein einfaches sh-Skript und schreibt eine log-Datei #!/bin/sh LOG="/var/log/dnsmasq.log" DD=`date +"%Y-%m-%d %H:%M:%S"` ACTION="$1" MAC="$2" IP="$3" HOST="$4" if [ "$HOST" = "" ]; then Host='unknown' fi echo "$DD $ACTION $MAC $IP $HOST">>$LOG exit 0 Das lief unter 42.3 problemlos. dnsmasq wird mit systemd gestartet und läuft als user "dnsmasq", der hat keine Gruppe und als shell /bin/null Die Arbeit macht dnsmasq, nur das Aufrufen des externen Programms scheitert. Die Berechtigung für das Log-File habe ich versuchsweise auf 777 gesetzt ohne Effekt, das script hat 755. Hat jemand eine Erklärung und/oder Abhilfe ?
Mir ist noch aufgefallen, dass dnsmasq von systemd als type=dbus aufgerufen wird. Kann es seinm dass deshalb von dnsmasq keine externen scripte aufgerufen werden können ? Grüsse, K. Müller
Noch was, nach vielem Testen bin ich der Meinung man sollte durchaus zunächst die üblichen Verdächtigen verhaften. Es ist apparmor, der dazwischen funkt. Ich habe versucht auf die Log-Datei Schreiberechtigung zu geben /var/log/dnsmasq.log rwa, und die Fehlermeldung hat sich gewandelt: /bin/sh: /usr/local/bin/logdnsmasq.sh: Permission denied sh ist aber definitiv erlaubt in /etc/apparmor.d/usr.sbin.dnsmasq steht /{,usr/}bin/{ba,da,}sh ix, # Required to execute --dhcp-script argument Das Script selbst mit Rechten zu versehen /usr/local/bin/logdnsmasq.sh ix, bringt nichts Hat Jemand ne Idee ? mfg K, Müller
Hallo, Am Mittwoch, 18. Juli 2018, 16:15:19 CEST schrieb Kasimir Müller:
Hi,
dnsmasq Version ist 2.78-lp150.1.11 aus dem openSUSE-Leap 15.0 Repo.
nach dem Update auf Leap 15.0 sehe ich folgendes Problem:
failed to execute /usr/local/bin/logdnsmasq.sh: Permission denied
in dnsmasq.conf :
dhcp-script=/usr/local/bin/logdnsmasq.sh
Das Script ist ein einfaches sh-Skript und schreibt eine log-Datei
#!/bin/sh LOG="/var/log/dnsmasq.log" DD=`date +"%Y-%m-%d %H:%M:%S"` ACTION="$1" MAC="$2" IP="$3" HOST="$4" if [ "$HOST" = "" ]; then Host='unknown' fi
echo "$DD $ACTION $MAC $IP $HOST">>$LOG exit 0
Das lief unter 42.3 problemlos. dnsmasq wird mit systemd gestartet und läuft als user "dnsmasq", der hat keine Gruppe und als shell /bin/null
Die Arbeit macht dnsmasq, nur das Aufrufen des externen Programms scheitert. Die Berechtigung für das Log-File habe ich versuchsweise auf 777 gesetzt ohne Effekt, das script hat 755.
Hat jemand eine Erklärung und/oder Abhilfe ? !.) Skript lief NIE richtig. 2.) Vielleicht bricht es irgendwo ab wegen falscher Umgebung. Kann man verbose/debug einschalten?
Mein test/dein skript . diff foodns foodns-orig . 1,2c1,2 . < #!/bin/sh -vx . < LOG="/tmp/dnsmasq.log" . ---
#!/bin/sh . > LOG="/var/log/dnsmasq.log" . 8,9c8,9. < if [ -z ${HOST} ]; then . < HOST='unknown' . --- . > if [ "$HOST" = "" ]; then . > Host='unknown'
Gruß Hugo Mahr -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 19.07.2018 um 10:57 schrieb Hugo:
Hallo, Am Mittwoch, 18. Juli 2018, 16:15:19 CEST schrieb Kasimir Müller:
Hi,
dnsmasq Version ist 2.78-lp150.1.11 aus dem openSUSE-Leap 15.0 Repo.
nach dem Update auf Leap 15.0 sehe ich folgendes Problem:
failed to execute /usr/local/bin/logdnsmasq.sh: Permission denied
in dnsmasq.conf :
dhcp-script=/usr/local/bin/logdnsmasq.sh
Das Script ist ein einfaches sh-Skript und schreibt eine log-Datei
#!/bin/sh LOG="/var/log/dnsmasq.log" DD=`date +"%Y-%m-%d %H:%M:%S"` ACTION="$1" MAC="$2" IP="$3" HOST="$4" if [ "$HOST" = "" ]; then Host='unknown' fi
echo "$DD $ACTION $MAC $IP $HOST">>$LOG exit 0
Das lief unter 42.3 problemlos. dnsmasq wird mit systemd gestartet und läuft als user "dnsmasq", der hat keine Gruppe und als shell /bin/null
Die Arbeit macht dnsmasq, nur das Aufrufen des externen Programms scheitert. Die Berechtigung für das Log-File habe ich versuchsweise auf 777 gesetzt ohne Effekt, das script hat 755.
Hat jemand eine Erklärung und/oder Abhilfe ? !.) Skript lief NIE richtig. 2.) Vielleicht bricht es irgendwo ab wegen falscher Umgebung. Kann man verbose/debug einschalten?
Mein test/dein skript
. diff foodns foodns-orig . 1,2c1,2 . < #!/bin/sh -vx . < LOG="/tmp/dnsmasq.log" . ---
#!/bin/sh . > LOG="/var/log/dnsmasq.log" . 8,9c8,9. < if [ -z ${HOST} ]; then . < HOST='unknown' . --- . > if [ "$HOST" = "" ]; then . > Host='unknown'
Gruß Hugo Mahr
Danke, aber das Script alleine funktioniert, wenngleich deins ein bisschen schöner ist.. Ich bin jetzt sicher, ass apparmor der "culprit" ist, weil ich unter 42.3 es ausgeschaltet hatte wegen ähnlicher Effekte und nach dem upgrade auf 15.0 war es wieder da. Grüsse, K. Müller
Kasimir Müller schrieb am 19.07.2018 um 11:14: [...]
Ich bin jetzt sicher, ass apparmor der "culprit" ist, weil ich unter 42.3 es ausgeschaltet hatte wegen ähnlicher Effekte und
nach dem upgrade auf 15.0 war es wieder da.
Es gibt ein YaST-Modul dafür ;). Du kannst das DNSmasq-Profil oder alle Profile auf "Complain" umschalten, dann findest Du im Log die entsprechenden Einträge, aber die Aktionen werden nicht mehr verhindert. Bei mir sind die Einträge in /var/log/audit/audit.log. Werner --
Hallo,Kaismir, Am Donnerstag, 19. Juli 2018, 11:14:35 CEST schrieb Kasimir Müller:
Host='unknown'
--------- falsch, scheint aber wichtig zu sein !.) Skript lief NIE richtig. sehr überspitzt. 2.) Vielleicht bricht es irgendwo ab wegen falscher Umgebung. Kann man verbose/debug einschalten Werners Vorschlag wird wohl helfen Gruß Hugo Mahr
-- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Danke an alle, die Korrekturen am Script haben nichts gebracht, witzigerweise wird ein mit Lazarus kompiliertes einfaches executable problemlos ausgeführt, nachdem es in usr.sbin.dnsmasq freigeschaltet wurde. Hängt also irgenwie doch mit sh bzw. der Umgebung zusammen. Nachdem der Umweg funktioniert, bin ichs zufrieden. Danke nochmals an alle, die zu helfen versuchten. mfg K. Müller
participants (3)
-
Hugo
-
Kasimir Müller
-
Werner Flamme