[Bug 277950] RUNDIR should not be set in pkg-plist in in dns/knot-resolver
- In reply to: bugzilla-noreply_a_freebsd.org: "[Bug 277950] RUNDIR should not be set in pkg-plist"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 28 Mar 2024 19:32:33 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277950
--- Comment #2 from Michael Grimm <trashcan@ellael.org> ---
(In reply to Leo Vandewoestijne from comment #1)
>> kresd will create RUNDIR on a vanilla system anyway and will set
>> permissions correctly
>
> Yes, but doesn't remove it when uninstalling.
> And so without this line it doesn't pass in poudriere
Ok, I have missed that poudriere testport is complaining.
> The line was modified after PR 267016
Yes, I saw that, namely from 0755 to 0660. And that is the culprit (see below).
> Further these variables exist for use in rc.conf:
>
> kresd_user="kresd"
> kresd_group="kresd"
> kresd_rundir="/var/run/${name}"
>
> Don't they allow what you wish to accomplish ..?
No, not really:
1) I am following these recommendations in rc.conf and drop privileges after
starting kresd:
dns> cat /usr/local/etc/knot-resolver/kresd.conf
[snip]
--
-- drop privileges, now
--
user('kresd','kresd')
--
-- create socket file
--
net.listen('/var/run/kresd/control/kresd.sock', nil, { kind = 'control' })
[snip]
2) kresd will create /var/run/kresd (if removed on purpose for demonstration)
as follows:
dns> rm -r /var/run/kresd
dns> service kresd start
kresd started.
dns> ls -al /var/run | grep kresd
drwx------ 3 kresd kresd 6 Mar 28 19:24 kresd
^^^
dns> ls -lR /var/run/kresd/
total 18
drwxr-x--- 2 kresd kresd 3 Mar 28 19:24 control
-rw-r----- 1 kresd kresd 10485760 Mar 28 19:25 data.mdb
-rw------- 1 root kresd 5 Mar 28 19:24 kresd.pid
-rw-r----- 1 kresd kresd 8192 Mar 28 19:24 lock.mdb
/var/run/kresd/control:
total 1
srwxr-xr-x 1 kresd kresd 0 Mar 28 19:24 kresd.sock
3) If one re-installes dns/knot-resolver one ends with:
dns> ls -al /var/run | grep kresd
drw-rw---- 3 kresd kresd 5 Mar 28 19:32 kresd
^^ ^^
4) After restarting kresd one renders kresd useless because of:
Mar 28 19:40:58 <daemon.notice> kresd[90451]: [net ] bind to
'/var/run/kresd/control/kresd.sock' (UNIX): Permission denied
Mar 28 19:40:58 <daemon.notice> kresd[90451]: [system] error while loading
config: error occurred here (config filename:lineno is at the bottom, if config
is involved):
Mar 28 19:40:58 <daemon.notice> kresd[90451]: stack traceback:
Mar 28 19:40:58 <daemon.notice> kresd[90451]: [C]: in function 'listen'
Mar 28 19:40:58 <daemon.notice> kresd[90451]:
/usr/local/etc/knot-resolver/kresd.conf:29: in main chunk
Mar 28 19:40:58 <daemon.notice> kresd[90451]: ERROR: net.listen() failed to
bind (workdir '/var/run/kresd')
5) This error message is repeated every other second until:
dns> chmod 700 /var/run/kresd
! changing /var/run/kresd from 660 back to 700
dns> ps Af | grep kresd
90816 - SsJ 0:00.01 daemon: /usr/local/sbin/kresd[90831] (daemon)
90831 - SJ 0:00.06 /usr/local/sbin/kresd -c
/usr/local/etc/knot-resolver/kresd.conf -n -q /var/run/kresd
90833 1 R+J 0:00.00 grep kresd
No more errors logged.
Ok, if one needs RUNDIR, I do propose to set it as follows:
-@dir(%%USERS%%,%%GROUPS%%,0660) %%RUNDIR%%
+@dir(%%USERS%%,%%GROUPS%%,0700) %%RUNDIR%%
HTH and regards,
Michael
--
You are receiving this mail because:
You are the assignee for the bug.