public inbox for gentoo-user@lists.gentoo.org
 help / color / mirror / Atom feed
From: cal <cal@mail.meme.technology>
To: gentoo-user@lists.gentoo.org
Subject: Re: [gentoo-user] odd issue with RTKIT syslog-ng
Date: Tue, 17 Nov 2020 18:36:12 -0800	[thread overview]
Message-ID: <d36be59b-9429-78be-85b2-5984561d79d2@mail.meme.technology> (raw)
In-Reply-To: <BKXBDGGG.SI5FS6FD.5WCRIZYJ@BEFZAVL5.RFUZ3VGV.TB7V7WIW>

On 11/17/20 7:33 AM, Jack wrote:
> On 2020.11.16 21:00, cal wrote:
>> On 11/16/20 4:22 PM, Jack wrote:
>>> On 2020.11.15 19:02, Jack wrote:
>>>> As usual, I've got what seems to be a really obscure problem, and I 
>>>> have not found any reference to it searching the interwebs.
>>>>
>>>> The suspect package is sys-auth/rtkit-0/13-r1 (which has nothing to 
>>>> do with chkrootkit) and I'm using app-admin/syslog-ng-3.26.1-r1.
>>>>
>>>> As a typical example from /var/log/messages (extract, and having 
>>>> reconfigured syslog-ng to us iso timestamps)
>>>>
>>>> 2020-11-15T18:30:01-05:00 localhost CROND[7320]: (root) CMD 
>>>> (/usr/lib/sa/sa1 1 1)
>>>> 2020-11-15T23:34:10-05:00 localhost rtkit-daemon[6263]: Supervising 
>>>> 0 threads of 0 processes of 0 users.
>>>> 2020-11-15T23:36:38-05:00 localhost rtkit-daemon[6263]: Supervising 
>>>> 0 threads of 0 processes of 0 users.
>>>> 2020-11-15T18:40:01-05:00 localhost CROND[15943]: (root) CMD (test 
>>>> -x /usr/sbin/run-crons && /usr/sbin/run-crons)
>>>>
>>>> All rtkit messages to syslog seem to be in UTC, or at least five 
>>>> hours off from my local Americas/New York timezone.  rtkit uses the 
>>>> syslog() call for all logging, and there is nothing in those calls 
>>>> that even mentions timezone.
>>>>
>>>> However, in digging further, I found two log entries from rtkit 
>>>> which do appear to be using local time.  In looking at the rtkit 
>>>> source, those two use the LOG_INFO and LOG_NOTICE as their levels.  
>>>> All other logging in rtkit uses LOG_ERR, LOG_DEBUG, or LOG_WARNING, 
>>>> with one exception:  I see one LOG_INFO message (repeated, scattered 
>>>> across the log) which does show the UTC time.
>>>>
>>>> So, does anyone have an idea what is going on?
>>>>
>>>> I have one theory so far, but I a bit stuck on how to test it.  I'm 
>>>> not sure where in the boot process rtkit gets started, but I think 
>>>> it's automatically started when Dbus starts.  As part of the 
>>>> daemon's startup routine, it drops some privileges.  Is it possible 
>>>> that the applicable timezone gets changed when it drops privileges?  
>>>> As far as I can tell, the log messages with the correct time are all 
>>>> produced before it drops privs.  Am I barking up the right tree, or 
>>>> am I barking mad?
>>>
>>> I've done some more digging, with lots of debugging output.  Up to a 
>>> point, the process acknowledges the local timezone.  However, after 
>>> doing a 'chroot "/proc"' and then 'chdir "/"' it thinks it's UTC.  
>>> Still doesn't make any sense to me, though.
>>
>> glibc uses /etc/localtime to for timezone conversion.  Changing root 
>> to a new root directory that does not have this file (or has a 
>> different one in its place) will show a different local time conversion.
>>
>> Example program:
>> #include <stdio.h>
>> #include <time.h>
>> #include <unistd.h>
>>
>> int main()
>> {
>>     time_t now = time(NULL);
>>     printf("Time outside of chroot = %s", ctime(&now));
>>     chroot("/proc");
>>     printf("Time inside of chroot = %s", ctime(&now));
>>     return 0;
>> }
>>
>> Time outside of chroot = Mon Nov 16 17:58:19 2020
>> Time inside of chroot = Tue Nov 17 01:58:19 2020
> Thanks for the confirmation.  I finally also tracked it down to the same 
> thing.  In this particular case, once rtkit does the chroot, it gets the 
> same time, but without knowing the time zone, so assumes UTC.  When it 
> calls syslog, syslog-ng uses that UTC timestamp as is, but apparently 
> doesn't know it is not in local time.
> 
> I'm going to see if the program can capture the local time zone before 
> doing the chroot, and then applying it again afterwards.

You may be able to get somewhere by setting the TZ environment variable 
to your desired timezone.

https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html

Cal


      reply	other threads:[~2020-11-18  2:36 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-16  0:02 [gentoo-user] odd issue with RTKIT syslog-ng Jack
2020-11-17  0:22 ` Jack
2020-11-17  2:00   ` cal
2020-11-17 15:33     ` Jack
2020-11-18  2:36       ` cal [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d36be59b-9429-78be-85b2-5984561d79d2@mail.meme.technology \
    --to=cal@mail.meme.technology \
    --cc=gentoo-user@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox