Bug 34035

Summary: hsh не удаётся создать chroot
Product: Sisyphus Reporter: Aleksei Nikiforov <darktemplaralt>
Component: pamAssignee: Dmitry V. Levin <ldv>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: at, evg, ldv, placeholder, rider, sem
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
hasher.log.bz2 none

Description Aleksei Nikiforov 2017-10-20 14:28:36 MSK
Created attachment 7238 [details]
hasher.log.bz2

При неопределённых условиях hasher не может создать chroot.

В чруте оказывается огромный sparse файл /var/log/tally, размером более 40 Gb, но фактически занимающем только несколько блоков на файловой системе (т.е. около нескольких килобайт), и сам файл полностью пустой.

$ hsh-shell ~/hsh-sandboxes/sisyphus-x86_64/hasher
-bash-3.2$ ls -lash /var/log/tallylog 
8.0K -rw------- 1 rooter rooter 43G Oct 20 11:17 /var/log/tallylog

На других системах этот файл /var/log/tally также присутствует, но занимает обычно лишь несколько килобайт, и также пустой.

В итоге вызов hasher завершается со следующим сообщением:
hsh-initroot: First time initialization complete.
hsh-initroot: RPM database archivation complete.
cpio: var/log/tallylog: field width not sufficient for storing file size
hsh-initroot: Chroot archivation failed.

В приложениях полный лог запуска hasher для создания нового чрута и сборки пакета в нём.

Удаление логов в чруте или их truncate перед созданием архива должен помочь решить данную проблему.
Comment 1 Dmitry V. Levin 2017-10-21 10:23:05 MSK
У вас UID >= 43G/64, не делайте так без необходимости.

Файл этот создаёт useradd из пакета shadow >= 4.5, при этом
$ rpmquery -f /var/log/tallylog
file /var/log/tallylog is not owned by any package

useradd хорошо бы исправить, для hasher это notabug.
Comment 2 Anton Farygin 2017-10-21 18:28:39 MSK
Дима, useradd тут не при чём. Алексей работает под доменным пользователем.
Comment 3 Anton Farygin 2017-10-21 18:32:23 MSK
Точнее не так. useradd наверное при чём. Но не делать UID таким большим сложно.
Comment 4 Mikhail Efremov 2017-10-23 20:37:43 MSK
(В ответ на комментарий №1)
> Файл этот создаёт useradd из пакета shadow >= 4.5, при этом
> $ rpmquery -f /var/log/tallylog
> file /var/log/tallylog is not owned by any package

Это pam_tally2(8) и принадлежать этот файл должен пакету pam, видимо.

> useradd хорошо бы исправить, для hasher это notabug.

useradd просто запускает /sbin/pam_tally2, который и создает этот файл. Но, видимо, действительно не нужно этого делать если файла не существует.
Comment 5 Dmitry V. Levin 2017-10-24 03:28:58 MSK
(In reply to comment #4)
> (В ответ на комментарий №1)
> > Файл этот создаёт useradd из пакета shadow >= 4.5, при этом
> > $ rpmquery -f /var/log/tallylog
> > file /var/log/tallylog is not owned by any package
> 
> Это pam_tally2(8) и принадлежать этот файл должен пакету pam, видимо.

Ещё один %ghost?

> useradd хорошо бы исправить, для hasher это notabug.
> 
> useradd просто запускает /sbin/pam_tally2, который и создает этот файл. Но,
> видимо, действительно не нужно этого делать если файла не существует.

Или пропатчить /sbin/pam_tally2, чтобы в режиме --reset=0 файл не создавался, если его ещё нет.
Comment 6 Aleksei Nikiforov 2017-11-07 12:31:21 MSK
Я предлагаю просто удалять логи в чруте хэшера перед его архивированием. Они всё равно не нужны там. Если нет возражений, я сделаю патч.
Comment 7 Dmitry V. Levin 2017-11-07 15:02:36 MSK
hasher используется не только для сборки пакетов.
Comment 8 Aleksei Nikiforov 2017-11-07 15:03:49 MSK
А для чего ещё он используется? Там логи точно нужны?
Comment 9 Dmitry V. Levin 2017-11-07 15:33:11 MSK
Для создания чрутов используется.
Comment 10 Aleksei Nikiforov 2017-11-07 15:36:03 MSK
Повторю вопрос: там логи точно нужны при этом?
Comment 11 Dmitry V. Levin 2017-11-07 15:38:23 MSK
Там нужны имена и права доступа.
Но /var/log/tallylog там не нужен в любом случае, он не должен был создаваться.
Comment 12 Dmitry V. Levin 2017-11-09 02:58:32 MSK
Зафиксим /sbin/pam_tally2
Comment 13 Repository Robot 2017-11-09 06:47:27 MSK
linux-pam-1.3.0.0.23.94f5-alt2 -> sisyphus:

Thu Nov 09 2017 Dmitry V. Levin <ldv@altlinux> 1.3.0.0.23.94f5-alt2
- /sbin/pam_tally2 --reset: avoid creating a missing tallylog file (closes: #34035).
- Packaged %ghost /var/log/tallylog file.