[systemd-devel] setroubleshoot integration.

Daniel J Walsh dwalsh at redhat.com
Wed Jan 9 14:03:03 PST 2013


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 01/09/2013 04:52 PM, Zbigniew Jędrzejewski-Szmek wrote:
> On Wed, Jan 09, 2013 at 02:58:12PM -0500, Daniel J Walsh wrote:
>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
>> 
>> On 01/09/2013 02:49 PM, Lennart Poettering wrote:
>>> On Wed, 09.01.13 17:44, Zbigniew Jędrzejewski-Szmek
>>> (zbyszek at in.waw.pl) wrote:
>>> 
>>>>> systemctl httpd status .... SELinux is blocking httpd read access
>>>>> on /var/www/index.html setroubleshoot ... run restorecon 
>>>>> /var/www/index.html
>>>>> 
>>>>> The only way for systemd to know the setroubleshoot analysys is
>>>>> for httpd is to include the pid when setroubleshoot writes the
>>>>> journal.
>>>> Hi,
>>>> 
>>>> the way that finding messages pertaining to a certain service works 
>>>> currently is encoded in src/share/logs-show.c, function 
>>>> show_journal_by_unit: - journald adds _SYSTEMD_UNIT=... when it can
>>>> to messages generated by the services themselves - systemd (PID 1)
>>>> writes messages about services with UNIT=... and journalds tags them
>>>> with _PID=1 - COREDUMP writes messages with COREDUMP_UNIT=...
>>>> 
>>>> I think it would be realitively to extend show_journal_by_unit() to 
>>>> check for messages with _SYSTEMD_UNIT=setroubleshootd.service (or 
>>>> whatever) and UNIT=... Would this work for you? This would require 
>>>> setroubleshootd to find out the unit name on its own. Actually, this 
>>>> might be for the better, since by the time that journald gets the 
>>>> message, the PID might be long gone, and setroubleshootd has more 
>>>> knowledge.
>>> 
>>> Oh, uhm, I was envisioning a much simpler, more generic solution for
>>> this. Something as simple as this:
>>> 
>>> We'd define a new special field OBJECT_PID. If this is included in a 
>>> message, and that message comes from a privileged service, then
>>> journald will automatically add in OBJECT_EXE, OBJECT_UID, OBJECT_COMM,
>>> OBJECT_UNIT ... from /proc.
> OK, that would work too. How is "a privileged service" defined?
> 
> Zbyszek
> 
UID=0 for now I would guess, until I hack into it with SELinux...

>>> That way, all setroubleshoot would have to do is add this one property
>>> to its messages, and systemd would do the rest. In fact, not only 
>>> setroubleshoot could make use of that. For example, PolicyKit might
>>> too. Much like setroubleshoot it needs to log messages about specific
>>> processes (in this case clients), and could benefit from implicit
>>> augmentation of the message by journald.
>>> 
>>> Eventually we might want to add the same for OBJECT_DEVICE or so, in
>>> case device managers want to logs things about devices or so.
>>> 
>>> Implementation of this scheme on the systemd side should be fairly
>>> simple, but even more so on the setroubleshoot side.
>>> 
>>> Does this make sense?
>>> 
>>> Lennart
>>> 
>> I like the idea, (Less work for me. )

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.13 (GNU/Linux)
Comment: Using GnuPG with undefined - http://www.enigmail.net/

iEYEARECAAYFAlDt6RYACgkQrlYvE4MpobPgggCdG7oEeE709xl9qG7PzoEzChwi
UZIAoL4CQkLOFpsM8Y1szdGHA5uWOeF8
=X7fb
-----END PGP SIGNATURE-----


More information about the systemd-devel mailing list