Bug 28549

Summary: слишком жёсткие права на /var/run/gdm/
Product: Sisyphus Reporter: Michael Shigorin <mike>
Component: gdmAssignee: Yuri N. Sedunov <aris>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: major    
Priority: P3 CC: aen, aris, boyarsh, ldv, sem, shaba
Version: unstable   
Hardware: all   
OS: Linux   
URL: https://bugzilla.gnome.org/show_bug.cgi?id=693679
Bug Depends on:    
Bug Blocks: 27685    
Attachments:
Description Flags
gdm-3.6.2-alt-runtimedir-perms.patch none

Description Michael Shigorin 2013-02-12 22:21:14 MSK
На http://nightly.altlinux.org/sisyphus/snapshots/20130212/regular-cinnamon-20130212-x86_64.iso пронаблюдали следующее: при некоторых условиях (возможно, зависящих от скорости загрузки) acc не работает.

Права на /var/run/gdm:
0770 root:root => не работает
0711 root:root => работает

В пакете 1777 root:gdm, файла в /etc/tmpfiles.d/ в gdm-3.6.2-alt3 не наблюдаю.

Спасибо за отладку ldv@ -- добавили в /etc/pam.d/acc отладку:
-session         optional        pam_xauth.so
+session         optional        pam_xauth.so debug xauthpath=/opt/xauth

где исполняемый /opt/xauth содержит следующее:
#!/bin/sh
/usr/bin/strace -o /tmp/strace.log -- /usr/bin/xauth "$@"

В полученном логе:

--- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=2794, si_uid=500} ---
execve("/usr/bin/xauth", ["/usr/bin/xauth", "-f", "/var/run/gdm/auth-for-altlinux-P"..., "nlist", ":0"], [/* 53 vars */]) = 0
[...]
stat("/var/run/gdm/auth-for-altlinux-PO3KiZ/database-c", 0x7fff11174380) = -1 EACCES (Permission denied)
open("/var/run/gdm/auth-for-altlinux-PO3KiZ/database-c", O_WRONLY|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied)
[...]
nanosleep({2, 0}, 0x7fff111741b0)       = 0
write(2, "/usr/bin/xauth:  timeout in lock"..., 98) = -1 EBADF (Bad file descriptor)
exit_group(1)
Comment 1 Michael Shigorin 2013-02-13 01:24:47 MSK
0770 -- "заслуга" апстрима: https://bugzilla.gnome.org/show_bug.cgi?id=693679
Comment 2 Michael Shigorin 2013-02-13 02:21:47 MSK
Created attachment 5735 [details]
gdm-3.6.2-alt-runtimedir-perms.patch

Патч, добавляющий всем право на сканирование /var/run/gdm/ (проверен сборкой образа, результирующие права 0771 root:root не мешают pam_xauth работать).

2 ldv: прошу посмотреть и высказаться, годится ли такое NMU -- не хотелось бы анонсировать regular-{gnome3,cinnamon}.iso с известной проблемой подобного плана.
Comment 3 Dmitry V. Levin 2013-02-13 02:26:17 MSK
Надо отдавать себе отчет в том, что 0770 root:root фактически означает 0700 root:root, поскольку у нас обычно никого, кроме root, в группе root нет.

Вопрос, создаются ли в /var/run/gdm/ объекты, к которым не-root не должен иметь доступ?
Comment 4 Michael Shigorin 2013-02-13 02:34:42 MSK
(В ответ на комментарий №3)
> Надо отдавать себе отчет в том, что 0770 root:root фактически означает 0700
> root:root, поскольку у нас обычно никого, кроме root, в группе root нет.

Разумеется.

> Вопрос, создаются ли в /var/run/gdm/ объекты, к которым не-root не должен иметь
> доступ?
Заметить таких не удалось, наблюдаю там каталоги вида auth-for-$USER-$XXXXXX, где USER -- gdm и, например, altlinux; права на них -- 0711 $USER:$USER.

Ещё упоминается тот самый маркер, при создании которого и портят права на /var/run/gdm, оказывающийся по умолчанию ещё и GDM_RAN_ONCE_MARKER_DIR:

configure.ac:   GDM_RAN_ONCE_MARKER_DIR=${localstatedir}/run/gdm
[...]
configure.ac:GDM_RAN_ONCE_MARKER_FILE="$GDM_RAN_ONCE_MARKER_DIR/ran-once-marker"

А сделать 0711 (как и получаются в другой ветке этого предположительно race condition) думал, но решил обойтись минимально необходимым изменением до пояснений апстрима, буде таковые последуют.  У них в NEWS /var/run/gdm упоминается в 2.22.0 (когда перенесли xauth-файлики) и в 2.29.0 (когда ужесточили права).
Comment 5 Dmitry V. Levin 2013-02-13 05:17:01 MSK
Какой-то в этом gdm случился плюрализм: в файле gdm/daemon/gdm-display-access-file.c написано, что каталог GDM_XAUTH_DIR (он же /var/run/gdm) создается с правами %attr(0711,root,gdm), в то время как daemon/main.c рядом создает GDM_RAN_ONCE_MARKER_DIR (тот же самый /var/run/gdm) с правами %attr(0700,-,-).
Беда, в общем, этот ваш gdm.
Comment 6 Dmitry V. Levin 2013-02-13 05:17:21 MSK
Какой-то в этом gdm случился плюрализм: в файле gdm/daemon/gdm-display-access-file.c написано, что каталог GDM_XAUTH_DIR (он же /var/run/gdm) создается с правами %attr(0711,root,gdm), в то время как daemon/main.c рядом создает GDM_RAN_ONCE_MARKER_DIR (тот же самый /var/run/gdm) с правами %attr(0770,-,-).
Беда, в общем, этот ваш gdm.
Comment 7 Dmitry V. Levin 2013-02-13 05:22:41 MSK
(In reply to comment #4)
> (В ответ на комментарий №3)
> > Надо отдавать себе отчет в том, что 0770 root:root фактически означает 0700
> > root:root, поскольку у нас обычно никого, кроме root, в группе root нет.
> 
> Разумеется.
> 
> > Вопрос, создаются ли в /var/run/gdm/ объекты, к которым не-root не должен иметь
> > доступ?
> Заметить таких не удалось, наблюдаю там каталоги вида auth-for-$USER-$XXXXXX,
> где USER -- gdm и, например, altlinux; права на них -- 0711 $USER:$USER.
> 
> Ещё упоминается тот самый маркер, при создании которого и портят права на
> /var/run/gdm, оказывающийся по умолчанию ещё и GDM_RAN_ONCE_MARKER_DIR:
> 
> configure.ac:   GDM_RAN_ONCE_MARKER_DIR=${localstatedir}/run/gdm
> [...]
> configure.ac:GDM_RAN_ONCE_MARKER_FILE="$GDM_RAN_ONCE_MARKER_DIR/ran-once-marker"
> 
> А сделать 0711 (как и получаются в другой ветке этого предположительно race
> condition) думал, но решил обойтись минимально необходимым изменением до
> пояснений апстрима, буде таковые последуют.  У них в NEWS /var/run/gdm
> упоминается в 2.22.0 (когда перенесли xauth-файлики) и в 2.29.0 (когда
> ужесточили права).

Более правильным выглядит изменение значений GDM_RAN_ONCE_MARKER_DIR и GDM_XAUTH_DIR, чтобы они не совпадали, и одно из них не было подкаталогом другого.
Comment 8 Repository Robot 2013-02-13 05:34:03 MSK
gdm-3.6.2-alt4 -> sisyphus:

* Wed Feb 13 2013 Michael Shigorin <mike@altlinux> 3.6.2-alt4
- NMU: fixed /var/run/gdm permissions which were blocking
  proper pam_xauth execution; thanks ldv@ (closes: #28549)
Comment 9 Michael Shigorin 2013-02-13 14:26:43 MSK
(In reply to comment #7)
> Более правильным выглядит изменение значений GDM_RAN_ONCE_MARKER_DIR и
> GDM_XAUTH_DIR, чтобы они не совпадали, и одно из них не было подкаталогом
> другого.
Об этом тоже подумал, но тут оценить последствия мне было несколько сложней.

2 aris: я попросил тебя не дожидаться и пропустить совсем нахальный NMU.
Надеюсь на снисхождение ввиду характера проблемы.
Comment 10 Michael Shigorin 2013-02-20 21:10:31 MSK
Апстрим сделал такой патч:
http://bugzilla-attachments.gnome.org/attachment.cgi?id=236941