Bug 29537 - wrong perms on /dev/snd/timer
: wrong perms on /dev/snd/timer
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/startup)
: unstable
: all Linux
: P3 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2013-10-30 15:07 by
Modified: 2014-03-24 02:46 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2013-10-30 15:07:08
после апгрейда с 208-alt1 до 208-alt2 права на /dev/snd/{seq,timer}
выставились в root:audio 0600 вместо обычных 0660.
это нехорошо.
------- Comment #1 From 2013-10-30 15:26:42 -------
уточните пожалуйста, это без systemd? под SysV?
------- Comment #2 From 2013-10-30 15:55:37 -------
А после обновления не перегружались?
Возможно это обновление не корректно происходит, и после перезагрузки все
исправится.

Сейчас kmod на основании /lib/modules/@kernel@/modules.devname генерит
/run/tmpfiles.d/kmod.conf для создания устройств - в нем все устройства с
правами 0600.
d /dev/snd 0755 - - -
c /dev/snd/timer 0600 - - - 116:33
d /dev/snd 0755 - - -
c /dev/snd/seq 0600 - - - 116:1


Но правильные права должны применятся на основе udev-rules.

SUBSYSTEM=="sound", GROUP="audio", \
  OPTIONS+="static_node=snd/seq", OPTIONS+="static_node=snd/timer"

судя по udev-rules.c, если группа определена, то права должны быть 0660.

возможно что при обновлении как-то подхватился /run/tmpfiles.d/kmod.conf и
устройства создались, но udev почему-то не применил к ним правила.
------- Comment #3 From 2013-10-30 16:20:57 -------
делался dist-upgrade, затем перезагрузка (в новое ядро).

# tail -4 /run/tmpfiles.d/kmod.conf
d /dev/snd 0755 - - -
c /dev/snd/timer 0600 - - - 116:33
d /dev/snd 0755 - - -
c /dev/snd/seq 0600 - - - 116:1

sysv, runlevel 3, локально не логинился.
права на прочие /dev/snd/* как и обычно, 0660 root:audio
------- Comment #4 From 2013-11-05 15:56:25 -------
У меня заработало нормально, после монтирования с -o bind  /var/run на /run.
Попробуйте.
Надо окончательно решить монтирование /var/run для SysV.
Да и сами программы привести к единому требованию (либо /var/run, либо /run)
------- Comment #5 From 2013-11-05 16:14:12 -------
так, извиняюсь, дело не только в этом.
пропадает /run/tmpfiles.d/kmod.conf и права нормальные.
пока разбираюсь.
------- Comment #6 From 2013-11-05 19:14:51 -------
и все же, если добиться правильного монтирования /var/run в /run - то все
начинает работать(права выставляются).
------- Comment #7 From 2013-11-06 14:04:22 -------
нашел виновника.
исправьте в /etc/rc.d/scripts/cleanup
systemd-tmpfiles --create
на
systemd-tmpfiles --create --remove  --exclude-prefix=/dev
------- Comment #8 From 2013-11-06 14:56:30 -------
да, помогло.
------- Comment #9 From 2013-11-06 15:25:35 -------
(В ответ на комментарий №7)
> нашел виновника.
> исправьте в /etc/rc.d/scripts/cleanup
> systemd-tmpfiles --create
> на
> systemd-tmpfiles --create --remove  --exclude-prefix=/dev

Прошу исправить.
------- Comment #10 From 2013-11-06 15:41:30 -------
А теперь мне объясните. :)
------- Comment #11 From 2013-11-06 15:54:20 -------
(В ответ на комментарий №10)
> А теперь мне объясните. :)

Из /etc/init.d/udevd вызывается только создание устройств(фильтр --prefix=/dev)
/sbin/systemd-tmpfiles --prefix=/dev --create
применяются правила udev(права, группы и т.п.)

А потом вызывается
systemd-tmpfiles --create
из /etc/rc.d/scripts/cleanup и затирает все права,группы.

Поэтому в /etc/rc.d/scripts/cleanup при вызове systemd-tmpfiles надо исключить
повторное создание устройст, а создавать только нужное в /var/run и т.п. для
этого используется фильтр --exclude-prefix=/dev
systemd-tmpfiles --create --remove  --exclude-prefix=/dev
------- Comment #12 From 2013-11-06 15:59:48 -------
А почему --remove?
------- Comment #13 From 2013-11-06 16:06:19 -------
(В ответ на комментарий №12)
> А почему --remove?

по аналогии с апстримными юнит-файлами.
------- Comment #14 From 2013-11-06 16:06:42 -------
и еще, не совсем по баге, но тоже имеет отношение.
Надо для sysV окончательно сделать /var/run и /run идентичными (симлинк или
mount --bind) (/var/lock и /run/lock тоже).
А то наблюдается бардак, /run присутствует уже давно, и часть ПО использует
/run, а большинство /var/run. С этим надо окончательно покончить.
------- Comment #15 From 2013-11-24 01:17:28 -------
startup-0.9.9.2-alt1 -> sisyphus:

* Wed Nov 06 2013 Dmitry V. Levin <ldv@altlinux> 0.9.9.2-alt1
- scripts/cleanup: pass --remove --exclude-prefix=/dev
  to systemd-tmpfiles (closes: #29537).
------- Comment #16 From 2014-03-20 16:12:32 -------
Дмитрий, для tmpfiles начиная с v209 был добавлен новый параметр

------
If the exclamation mark is used, this line is only safe of execute during boot,
and can break a running system. Lines without the exclamation mark are presumed
to be safe to execute at any time, e.g. on package upgrades.  systemd-tmpfiles
will execute line with an exclamation mark only if option --boot is given.

       For example:

           # Make sure these are created by default so that nobody else can
           d /tmp/.X11-unix 1777 root root 10d

           # Unlink the X11 lock files
           r! /tmp/.X[0-9]*-lock

The second line in contrast to the first one would break a running system, and
will only be executed with --boot.
-----------

прошу обновить и добавить параметр --boot.
Должно выглядеть так:
systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev
------- Comment #17 From 2014-03-20 18:20:42 -------
(In reply to comment #16)
> Дмитрий, для tmpfiles начиная с v209 был добавлен новый параметр

Тогда придется ставить зависимость на >= 209?
------- Comment #18 From 2014-03-20 18:24:51 -------
да, предыдущие версии не поддерживали "!" в tmpfiles и не было параметра
--boot.
------- Comment #19 From 2014-03-24 02:46:45 -------
startup-0.9.9.5-alt1 -> sisyphus:

* Sun Mar 23 2014 Dmitry V. Levin <ldv@altlinux> 0.9.9.5-alt1
- scripts/cleanup: pass --boot to systemd-tmpfiles --remove --create
  (once more closes: #29537)