Bug 29537 - wrong perms on /dev/snd/timer
Summary: wrong perms on /dev/snd/timer
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: startup (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Alexey Gladkov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-10-30 15:07 MSK by Sergey Bolshakov
Modified: 2014-03-24 02:46 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Bolshakov 2013-10-30 15:07:08 MSK
после апгрейда с 208-alt1 до 208-alt2 права на /dev/snd/{seq,timer}
выставились в root:audio 0600 вместо обычных 0660.
это нехорошо.
Comment 1 Alexey Shabalin 2013-10-30 15:26:42 MSK
уточните пожалуйста, это без systemd? под SysV?
Comment 2 Alexey Shabalin 2013-10-30 15:55:37 MSK
А после обновления не перегружались?
Возможно это обновление не корректно происходит, и после перезагрузки все исправится.

Сейчас 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 Sergey Bolshakov 2013-10-30 16:20:57 MSK
делался 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 Alexey Shabalin 2013-11-05 15:56:25 MSK
У меня заработало нормально, после монтирования с -o bind  /var/run на /run.
Попробуйте.
Надо окончательно решить монтирование /var/run для SysV.
Да и сами программы привести к единому требованию (либо /var/run, либо /run)
Comment 5 Alexey Shabalin 2013-11-05 16:14:12 MSK
так, извиняюсь, дело не только в этом.
пропадает /run/tmpfiles.d/kmod.conf и права нормальные.
пока разбираюсь.
Comment 6 Alexey Shabalin 2013-11-05 19:14:51 MSK
и все же, если добиться правильного монтирования /var/run в /run - то все начинает работать(права выставляются).
Comment 7 Alexey Shabalin 2013-11-06 14:04:22 MSK
нашел виновника.
исправьте в /etc/rc.d/scripts/cleanup
systemd-tmpfiles --create
на
systemd-tmpfiles --create --remove  --exclude-prefix=/dev
Comment 8 Sergey Bolshakov 2013-11-06 14:56:30 MSK
да, помогло.
Comment 9 Alexey Shabalin 2013-11-06 15:25:35 MSK
(В ответ на комментарий №7)
> нашел виновника.
> исправьте в /etc/rc.d/scripts/cleanup
> systemd-tmpfiles --create
> на
> systemd-tmpfiles --create --remove  --exclude-prefix=/dev

Прошу исправить.
Comment 10 Dmitry V. Levin 2013-11-06 15:41:30 MSK
А теперь мне объясните. :)
Comment 11 Alexey Shabalin 2013-11-06 15:54:20 MSK
(В ответ на комментарий №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 Dmitry V. Levin 2013-11-06 15:59:48 MSK
А почему --remove?
Comment 13 Alexey Shabalin 2013-11-06 16:06:19 MSK
(В ответ на комментарий №12)
> А почему --remove?

по аналогии с апстримными юнит-файлами.
Comment 14 Alexey Shabalin 2013-11-06 16:06:42 MSK
и еще, не совсем по баге, но тоже имеет отношение.
Надо для sysV окончательно сделать /var/run и /run идентичными (симлинк или
mount --bind) (/var/lock и /run/lock тоже).
А то наблюдается бардак, /run присутствует уже давно, и часть ПО использует
/run, а большинство /var/run. С этим надо окончательно покончить.
Comment 15 Repository Robot 2013-11-24 01:17:28 MSK
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 Alexey Shabalin 2014-03-20 16:12:32 MSK
Дмитрий, для 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 Dmitry V. Levin 2014-03-20 18:20:42 MSK
(In reply to comment #16)
> Дмитрий, для tmpfiles начиная с v209 был добавлен новый параметр

Тогда придется ставить зависимость на >= 209?
Comment 18 Alexey Shabalin 2014-03-20 18:24:51 MSK
да, предыдущие версии не поддерживали "!" в tmpfiles и не было параметра --boot.
Comment 19 Dmitry V. Levin 2014-03-24 02:46:45 MSK
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)