FS#36259 - [systemd] 206 sets incorrect permissions on static nodes

Attached to Project: Arch Linux
Opened by Gaetan Bisson (vesath) - Wednesday, 24 July 2013, 02:50 GMT
Last edited by Dave Reisner (falconindy) - Tuesday, 13 August 2013, 16:45 GMT
Task Type Bug Report
Category Packages: Testing
Status Closed
Assigned To Dave Reisner (falconindy)
Tom Gundersen (tomegun)
Architecture All
Severity Medium
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 7
Private No

Details

With linux-3.10.2-1 from [testing] the fuse module is not automatically loaded when a client application tries to use it - as used to be the case with linux-3.9.9-1 and before.
This task depends upon

Closed by  Dave Reisner (falconindy)
Tuesday, 13 August 2013, 16:45 GMT
Reason for closing:  Fixed
Additional comments about closing:  systemd-206-2
Comment by Gaetan Bisson (vesath) - Wednesday, 24 July 2013, 02:51 GMT
That's all I can say for now; when I find time to investigate further I'll report my findings here if any.
Comment by Gerardo Exequiel Pozzi (djgera) - Wednesday, 24 July 2013, 03:52 GMT
maybe related to recent udev/kmod changes? /dev/fuse previoulsy has 0666 now has 0600
Comment by Tom Gundersen (tomegun) - Wednesday, 24 July 2013, 11:07 GMT
50-udev-default.rules says that /dev/fuse should be 0666.

So this seems to be an udev bug (almost certainly introduced by me). Sadly I don't have time to look into it today.
Comment by Tom Gundersen (tomegun) - Wednesday, 24 July 2013, 11:29 GMT
Hm, my OCD won, so I had a look. I can not reliably reproduce this... If you manually run "/lib/systemd/systemd-udevd --debug" you should see calls to "chmod" near the end of the output (as long as the modules are not loaded). What happens there?

The relevant code is http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-rules.c#n2500

I'll have a better look tomorrow if this is not resolved by then.
Comment by Dave Reisner (falconindy) - Wednesday, 24 July 2013, 12:34 GMT
I can reproduce this on a VM -- it boots with 0600 permissions, but as soon as I load the fuse module, udev changes the perms to 0666.
Comment by Tom Gundersen (tomegun) - Wednesday, 24 July 2013, 12:41 GMT
@falconindy: that's my guess, but I can't make much sense of it yet.

I can reproduce the problem too now, but if I restart udevd it fixes itself, so it looks like a race-condition.

I first thought it may be that the device nodes are somehow not created before udev is started, but that doesn't make sense as both the GROUP= and the ACL stuff is applied correctly, it is just the permissions that are wrong...
Comment by Tom Gundersen (tomegun) - Wednesday, 24 July 2013, 13:27 GMT
Problem was that the following happens:

systemd-tmpfiles --prefix=/dev --create <- createse dead nodes
systemd-udevd <- changes permissions
systemd-tmpfiles --create <- resets permissions

I'll post a fix to the systemd ML shortly, which will change the tmpfiles api slightly to allow:

systemd-tmpfiles --prefix=/dev --create <- createse dead nodes
systemd-udevd <- changes permissions
systemd-tmpfiles --prefix=!/dev --create <- don't touch /dev at all
Comment by Tom Gundersen (tomegun) - Wednesday, 24 July 2013, 13:35 GMT Comment by Dave Reisner (falconindy) - Wednesday, 24 July 2013, 16:07 GMT Comment by Gaetan Bisson (vesath) - Wednesday, 24 July 2013, 23:41 GMT
Thanks Tom and Dave for figuring this out and fixing it so quickly!
Comment by Christian Hesse (eworm) - Friday, 26 July 2013, 08:36 GMT
Thanks for providing a fix for that. Will there be an updated systemd package in [testing] soon?
Comment by Dave Reisner (falconindy) - Friday, 26 July 2013, 14:04 GMT
No, I'd rather see a 207 release given that there's other problems with 206.

Loading...