[gelöst] dnsmasq antwortet nur, wenn er als root läuft

elmicha

Neuer User
Mitglied seit
24 Aug 2008
Beiträge
96
Punkte für Reaktionen
0
Punkte
6
Hallo,

wenn ich dnsmasq normal ohne "-u root" starte, meckert er, dass er nichts lesen darf:
Code:
May 31 13:38:53 fritz dnsmasq[13960]: failed to access /etc/resolv.conf: Permission denied
May 31 13:38:53 fritz dnsmasq[13960]: failed to load names from /etc/hosts: Permission denied
May 31 13:38:53 fritz dnsmasq[13960]: failed to read /etc/ethers:Permission denied

Die angemeckerten Dateien sind für alle lesbar, aber /etc/, /var/tmp/ und auch /var/ sind nur für root lesbar. Ich nehme an, diese Verzeichnisse sollten eigentlich für alle lesbar (a+rX) sein, oder bin ich ganz auf dem falschen Dampfer?

Viele Grüsse...
Michael
 
Zuletzt bearbeitet:
was sagt denn ein
Code:
ls -lah /
genau, solange die Verzeichnisse ausführbar sind (x) sollte dnsmasq die Datein lesen können, wenn ich mich nicht irre.
 
Code:
/var/mod/root # ls -lah /
drwxrwxrwx   15 root     root          212 May 30 21:12 .
drwxrwxrwx   15 root     root          212 May 30 21:12 ..
drwx------    2 root     root         1.4k May 23 15:45 bin
drwxr-xr-x    4 root     root            0 Jan  1  1970 data
drwxr-xr-x    7 root     root            0 May 31 11:06 dev
drwx------   34 root     root         1.4k May 23 00:34 etc
lrwxrwxrwx    1 root     root           12 May 30 21:11 home -> var/mod/home
drwx------    3 root     root         5.1k May 30 21:11 lib
lrwxrwxrwx    1 root     root            7 May 30 21:11 mod -> var/mod
lrwxrwxrwx    1 root     root           19 May 30 21:10 nohup.out -> ./var/tmp/nohup.out
drwx------    2 root     root            3 May 23 00:33 oldroot
dr-xr-xr-x  118 root     root            0 Jan  1  2000 proc
drwx------    2 root     root          886 May 30 21:12 sbin
drwx------    3 root     root           20 May 29 11:54 share
drwx------    2 root     root            3 May 23 00:34 sto
drwxr-xr-x   10 root     root            0 Jan  1  2000 sys
lrwxrwxrwx    1 root     root            7 May 30 21:11 tmp -> var/tmp
drwx------   11 root     root          126 May 23 16:31 usr
drwx------   18 root     root            0 May 31 20:20 var
-rw-------    1 root     root        30.0k May 30 21:12 var.tar

Hmm, in /lib darf auch nur root schauen.
 
Dannn ist bei dir was falsch, denke ich.
Code:
/var/mod/root # ls -lah /
drwxrwxrwx   14 root     root          204 May 31 15:57 .
drwxrwxrwx   14 root     root          204 May 31 15:57 ..
drwxr-xr-x    2 root     root         1.2k May 31 15:57 bin
drwxr-xr-x    4 root     root            0 Jan  1  1970 data
drwxr-xr-x    7 root     root            0 Jan  1  2000 dev
drwxr-xr-x   28 root     root         1.2k Apr  8 09:38 etc
lrwxrwxrwx    1 root     root           12 May 31 15:56 home -> var/mod/home
drwxr-xr-x    3 root     root         5.0k May 31 15:57 lib
lrwxrwxrwx    1 root     root            7 May 31 15:56 mod -> var/mod
lrwxrwxrwx    1 root     root           19 May 31 15:56 nohup.out -> ./var/tmp/nohup.out
drwxr-xr-x    2 root     root            3 Mar 16 13:56 oldroot
dr-xr-xr-x   84 root     root            0 Jan  1  2000 proc
drwxr-xr-x    2 root     root          809 May 14 15:24 sbin
drwxr-xr-x    3 root     root           20 May 29 11:52 share
drwxr-xr-x   10 root     root            0 Jan  1  2000 sys
lrwxrwxrwx    1 root     root            7 May 31 15:56 tmp -> var/tmp
drwxr-xr-x   11 root     root          117 May 14 15:24 usr
drwxr-xr-x   17 root     root            0 May 31 20:32 var
-rw-r--r--    1 root     root        30.0k May 31 15:57 var.tar
 
denke ich auch, baue am besten nochmal neu
 
Ja, da scheint bei mir etwas nicht geklappt zu haben. Auf dem Build-System in build/modified/filesystem sieht's genauso aus, mal abgesehen davon, dass alles meinem User gehört.

Wenn ich vor dem make ein "umask 000" gebe (normal hab ich 077), wird's ein bisschen besser:

Code:
# ll build/modified/filesystem
insgesamt 76
drwx------ 15 elmicha users  4096 2009-05-31 21:40 .
drwxrwxrwx  6 elmicha users   110 2009-05-31 21:41 ..
drwx------  2 elmicha users  4096 2009-05-23 15:45 bin
drwx------  2 elmicha users     6 2009-05-23 00:33 data
drwxr-xr-x  7 elmicha users  8192 2009-05-31 21:40 dev
drwx------ 34 elmicha users  4096 2009-05-23 00:34 etc
lrwxrwxrwx  1 elmicha users    12 2009-05-31 21:40 home -> var/mod/home
drwxrwxr-x  3 elmicha users  8192 2009-05-31 21:40 lib
lrwxrwxrwx  1 elmicha users     7 2009-05-31 21:40 mod -> var/mod
lrwxrwxrwx  1 elmicha users    19 2009-05-31 21:40 nohup.out -> ./var/tmp/nohup.out
drwx------  2 elmicha users     6 2009-05-23 00:33 oldroot
drwxrwxr-x  2 elmicha users     6 2009-05-29 11:54 proc
drwx------  2 elmicha users  4096 2009-05-31 21:40 sbin
drwxrwxr-x  3 elmicha users    16 2009-05-29 11:54 share
drwx------  2 elmicha users     6 2009-05-23 00:33 sto
drwx------  2 elmicha users     6 2009-05-23 00:32 sys
lrwxrwxrwx  1 elmicha users     7 2009-05-31 21:40 tmp -> var/tmp
drwx------ 11 elmicha users   111 2009-05-23 16:31 usr
drwxrwxr-x  2 elmicha users     6 2009-05-29 11:54 var
-rw-rw-rw-  1 elmicha users 30720 2009-05-31 21:40 var.tar

... wobei ich mit diesem make nur das Auspacken/Einpacken neu ausgeführt habe ("STEP 1: UNPACK" usw.)

In fwmod gibt es eine Zeile

find "${FILESYSTEM_DIR}" -maxdepth 1 -type d -exec chmod +rx {} ';'

aber die wirkt nur auf das build/original/filesystem, das sieht dann so aus:

Code:
# ll build/original/filesystem
insgesamt 56
drwxrwxr-x 13 elmicha users   151 2009-05-29 11:54 .
drwxrwxrwx  5 elmicha users    51 2009-05-31 21:57 ..
drwxrwxr-x  2 elmicha users  4096 2009-05-29 11:54 bin
drwxrwxr-x  2 elmicha users     6 2009-05-29 11:54 data
drwxrwxr-x  3 elmicha users  8192 2009-05-29 11:54 dev
drwxrwxr-x  8 elmicha users  4096 2009-05-29 11:54 etc
drwxrwxr-x  3 elmicha users  8192 2009-05-29 11:54 lib
lrwxrwxrwx  1 elmicha users    19 2009-05-31 21:57 nohup.out -> ./var/tmp/nohup.out
drwxrwxr-x  2 elmicha users     6 2009-05-29 11:54 proc
drwxrwxr-x  2 elmicha users  4096 2009-05-29 11:54 sbin
drwxrwxr-x  3 elmicha users    16 2009-05-29 11:54 share
drwxrwxr-x  2 elmicha users     6 2009-05-29 11:54 tmp
drwxrwxr-x  6 elmicha users    49 2009-05-29 11:54 usr
drwxrwxr-x  2 elmicha users     6 2009-05-29 11:54 var
-rw-rw----  1 elmicha users 20480 2009-05-29 11:54 var.tar

Hmm, wie ist denn bei Euch auf dem Build-System die umask gesetzt?
Kann es sein, dass statt "chmod +rx" besser "chmod a+rx" benutzt werden sollte, wenn die Änderung für alle gelten soll?
 
Bei mir passen die Sachen auch im Build-System. Sie gehören allerdings dem aktuellen User, das ist so korrekt.

Was passiert, wenn du den gesamtne kram mal löschst, neu auscheckst bzw. runterlädst und dann noch einmal probierst?
 
Ja, ich bin gerade am Neubauen - diesmal mit umask 022 von Anfang an. Ich hoffe, die 022 ist richtig geraten.
 
umask:

Code:
lars@grobi:~$ umask
0022
lars@grobi:~$
 
Danke, da hatte ich ja richtig geraten. Und jetzt sieht's hier auch deutlich netter aus:

Code:
# ll build/modified/filesystem
insgesamt 76
drwxr-xr-x 15 elmicha users  4096 2009-06-01 00:09 .
drwxr-xr-x  6 elmicha users   110 2009-06-01 00:10 ..
drwxr-xr-x  2 elmicha users  4096 2009-05-31 23:36 bin
drwxr-xr-x  2 elmicha users     6 2009-05-31 22:31 data
drwxr-xr-x  7 elmicha users  8192 2009-06-01 00:09 dev
drwxr-xr-x 34 elmicha users  4096 2009-05-31 22:32 etc
lrwxrwxrwx  1 elmicha users    12 2009-06-01 00:09 home -> var/mod/home
drwxr-xr-x  3 elmicha users  8192 2009-06-01 00:09 lib
lrwxrwxrwx  1 elmicha users     7 2009-06-01 00:09 mod -> var/mod
lrwxrwxrwx  1 elmicha users    19 2009-06-01 00:08 nohup.out -> ./var/tmp/nohup.out
drwxr-xr-x  2 elmicha users     6 2009-05-31 22:31 oldroot
drwxr-xr-x  2 elmicha users     6 2009-05-29 11:54 proc
drwxr-xr-x  2 elmicha users  4096 2009-06-01 00:09 sbin
drwxr-xr-x  3 elmicha users    16 2009-05-29 11:54 share
drwxr-xr-x  2 elmicha users     6 2009-05-31 22:31 sto
drwxr-xr-x  2 elmicha users     6 2009-05-31 22:30 sys
lrwxrwxrwx  1 elmicha users     7 2009-06-01 00:09 tmp -> var/tmp
drwxr-xr-x 11 elmicha users   111 2009-06-01 00:07 usr
drwxr-xr-x  2 elmicha users     6 2009-05-29 11:54 var
-rw-r--r--  1 elmicha users 30720 2009-06-01 00:09 var.tar

Da stellt sich die Frage, ob das Makefile die User mit falscher umask darauf hinweisen könnte, dass sie doch bitte "umask 022" setzen möchten. Z.B. sowas:

Code:
# Need umask 0022 or some permissions might end up wrong
ifneq ($(shell umask),0022)
$(error Please run "umask 0022", it is now $(shell umask))
endif
 
Hattest du die umask vorher verändert?
 
Ja, umask 022. Allerdings sogar vor dem Checkout, so dass ich nicht sicher bin, ob diese Warnung im Makefile noch was bringt, oder ob's dann schon zu spät wäre, die umask zu setzen.

Dnsmasq läuft jetzt auf jeden Fall wieder als nobody. :D
 
Ich meinte noch vorher
 
Die umask 077 hab ich seit 2006, Standard (bei Gentoo) ist offenbar tatsächlich 022.

Ich hab probiert, was passiert, wenn ich beim Auschecken umask 077 habe und zwischen "make menuconfig" und dem normalen make umask 022 setze (d.h. ob das vorgeschlagene Anmeckern der umask im Makefile etwas bringt). Leider macht's das auch nicht wirklich besser:

Code:
# ll build/modified/filesystem
insgesamt 76
drwxr-xr-x 15 elmicha users  4096 2009-06-01 11:45 .
drwxr-xr-x  6 elmicha users   110 2009-06-01 11:46 ..
drwxr-xr-x  2 elmicha users  4096 2009-06-01 10:46 bin
drwx------  2 elmicha users     6 2009-06-01 09:49 data
drwxr-xr-x  7 elmicha users  8192 2009-06-01 11:45 dev
drwx------ 34 elmicha users  4096 2009-06-01 09:49 etc
lrwxrwxrwx  1 elmicha users    12 2009-06-01 11:45 home -> var/mod/home
drwxr-xr-x  3 elmicha users  8192 2009-06-01 11:45 lib
lrwxrwxrwx  1 elmicha users     7 2009-06-01 11:45 mod -> var/mod
lrwxrwxrwx  1 elmicha users    19 2009-06-01 11:44 nohup.out -> ./var/tmp/nohup.out
drwx------  2 elmicha users     6 2009-06-01 09:49 oldroot
drwxr-xr-x  2 elmicha users     6 2009-05-29 11:54 proc
drwxr-xr-x  2 elmicha users  4096 2009-06-01 11:45 sbin
drwxr-xr-x  3 elmicha users    16 2009-05-29 11:54 share
drwx------  2 elmicha users     6 2009-06-01 09:49 sto
drwx------  2 elmicha users     6 2009-06-01 09:48 sys
lrwxrwxrwx  1 elmicha users     7 2009-06-01 11:45 tmp -> var/tmp
drwxr-xr-x 11 elmicha users   111 2009-06-01 11:43 usr
drwxr-xr-x  2 elmicha users     6 2009-05-29 11:54 var
-rw-r--r--  1 elmicha users 30720 2009-06-01 11:45 var.tar

/lib ist jetzt zwar für alle lesbar, aber /etc immer noch nicht.

D.h. die vorgeschlagene Fehlermeldung im Makefile bringt's so nicht.
 
Kannst du bitte nochmal die Unterschiede zwischen original und modified deutlich machen, wenn die umask "falsch" ist. Irgendein check sollten wir ja einbauen. Oder müssen wir dem tar mitgeben, dass die Berechtigungen erhalten bleiben?

MfG Oliver
 
Der wichtigste Unterschied ist, dass bei umask 077 die Verzeichnisse /etc und /var nur für root lesbar sind - deshalb konnte dnsmasq die /etc/{resolv.conv,hosts,ethers} nicht lesen.

Die Idee, dem tar den Schalter -p mitzugeben, damit die Berechtigungen erhalten bleiben, bringt's leider auch nicht, da schon das original/filesystem/etc nur für User (root) und Group (root) rwx ist, für others nicht.

Wie wär's mit einem Eintrag im Wiki, dass man bitte vor dem Auschecken umask 022 setzen soll? Und dazu den Check im Makefile, aber mit Link aufs Wiki? Dann müssen die Betroffenen leider noch mal auschecken, aber was Besseres fällt mir auch nicht ein.
 
Es ist ein Wiki. Änder das doch einfach ;)
 
Ich hab mir das jetzt 90 Minuten angeschaut. Wie schon festgestellt bringt es nichts die umask im Build-Prozess zu ändern, da das tar die Berechtigungen vom root/ Ordner übernimmt. Beim make muss also überprüft werden, dass der root Ordner 755 hat (und die Unterordner hoffentlich auch) und die umask auf 0022 gesetzt ist. Ansonsten haben alle Verzeichnisse die nicht unter root/ sind falsche Rechte.

MfG Oliver

edit: http://trac.freetz.org/changeset/3393
 
Zuletzt bearbeitet:
Hi Leute,

ich krame mal diesen Thread aus, da ich das gleiche Problem habe wie oben beschrieben

Jan 4 23:03:10 fritz daemon.warn dnsmasq[6094]: failed to access /etc/resolv.conf: Permission denied
Jan 4 23:03:10 fritz daemon.err dnsmasq[6094]: failed to load names from /etc/hosts: Permission denied
Jan 4 23:03:10 fritz daemon.err dnsmasq-dhcp[6094]: failed to read /etc/ethers: Permission denied

Wie funktioniert die lösung, hab leider net so den plan, was muß ich wo genau eingeben?
 
Welche Freetz Version? Welches Build-System?

Mfg Oliver
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.