LINUX.ORG.RU
ФорумTalks

Первый раз Поттеринг мне что-то сломал! Алилуя!

 , , ,


2

2

Я уж думал, что этот день никогда не настанет.

Решил попробовать nixos и bcachefs. Там он даже заботливо опакечен, но одна беда --- почему-то сломано шифрование. «error requesting encryption key» и непонятно, куда копать.

Причину начал искать в субботу, а нашел только сейчас. Факап всплыл не в bcachefs-tools, не в ядре и даже не в nixpkgs. Оказ-ца Поттеринг откатил перед релизом systemd v234 вот этот коммит, а как бы полноценный фикс этой проблемы оставил на потом. Из-за этого keyring, куда складывала ключ юзерспейсная часть bcachefs при unlock оказался не те keyring'ом, где его искала ядерная часть bcachefs.

Ну что, теперь я как все, поздравьте меня!

Теперь придется собирать мир до следующего релиза, так?

★★★★★

Ответ на: комментарий от pelmenman

nixos оказался виноват исключительно тем, что поставлял в stable systemd v234. а сломал в нем важный мне момент лично Поттеринг.

t184256 ★★★★★
() автор топика
Последнее исправление: t184256 (всего исправлений: 1)

Не думаю, что восстанавливать этот коммит — хорошая идея, он создаёт дыру в безопасности (большую). Откати лучше ещё и 74dd6b.

intelfx ★★★★★
()
Ответ на: комментарий от t184256

Нет, сломал не в нём, а в v233. В v234 попытались это пофиксить, но случайно сделали дыру, и прямо перед релизом фикс пришлось откатить. Примерно вот так: https://github.com/systemd/systemd/pull/6286#issuecomment-313729634

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Спасибо.

О, ты же самый шарящий в systemd и около. Как думаешь:

1) может лучше не откатываться, а обновиться вперед, чтобы вошел вот этот merge request?

2) стоит написать Kent'у Overstreet'у, что его творения не на всех systemd договориваются по поводу keychain, или вертел он такие проблемы?

3) стоит что-то пытаться пропихнуть в nixpkgs или им до задницы мои экзотические эксперименты с огнем в лице bcachefs?

t184256 ★★★★★
() автор топика
Ответ на: комментарий от t184256

может лучше не откатываться, а обновиться вперед, чтобы вошел вот этот merge request?

Я не знал об этом PR. Да, это хорошая идея. Но далеко не факт, что он решает твою проблему «как есть». Опиши проблему подробнее: в какой момент ключ вводится и в какой момент к нему исчезает доступ? Надо полагать, что у тебя там не просто cryptsetup, а что-то bcachefs-специфичное? Я совершенно не знаком с bcachefs и инструментарием вокруг него.

стоит написать Kent'у Overstreet'у, что его творения не на всех systemd договориваются по поводу keychain, или вертел он такие проблемы?

Думаю, что второе. Я ведь правильно понимаю, что до 74dd6b всё работало?

Впрочем, если он поставляет с bcachefs-utils какие-то свои юниты, возможно, в них теперь тоже нужно прописать KeyringMode=shared — вот об этом написать имеет смысл. Но мне нужно, чтобы ты ответил на первый вопрос.

стоит что-то пытаться пропихнуть в nixpkgs или им до задницы мои экзотические эксперименты с огнем в лице bcachefs?

Что именно ты туда хочешь пропихнуть?

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 4)
Ответ на: комментарий от t184256

В мозг тебе тоже Поттеринг насрал.

Deleted
()
Ответ на: комментарий от intelfx

И тут я понял, что пока еще ничего не понял.

если Черезуличный поставляет в bcachefs-utils какие-то свои юниты, возможно, в них теперь нужно прописать KeyringMode=shared — вот об этом написать имеет смысл.

Нет, не поставляет.

Опиши проблему подробнее: в какой момент ключ вводится и в какой момент к нему исчезает доступ?

Тестирую вручную: после запуска логинюсь в tty как root. Делаю bcache unlock.

В systemd v234 от nixos ключ попадает в keyring _uid.0, keyctl show кажет keyring _ses, где его нет. При попытке mount ключ не находится.

Если же заревертить тот коммит, то mount после unlock проходит отлично. keyctl show при этом кажет, что _uid.0 вложен в _ses, в нем (_uid.0) есть ключ от bcachefs.

Проверил еще на debian'е с systemd 232-25+deb9u1 (ОК), systemd 234-3~bpo9+1 (сломано), 235-2 (сломано!).

Я ведь правильно понимаю, что до 74dd6b всё работало?

Пока не знаю. Поставил мир пересобираться с https://github.com/NixOS/systemd/tree/nixos-v231

Узнаю --- отвечу еще раз.

Что именно ты туда [в nixpkgs] хочешь пропихнуть?

Как выясняется, пока что не знаю.

t184256 ★★★★★
() автор топика
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от t184256

Тестирую вручную: после запуска логинюсь в tty как root. Делаю bcache unlock.
В systemd v234 от nixos ключ попадает в keyring _uid.0, keyctl show кажет keyring _ses, где его нет. При попытке mount ключ не находится.

Т. е. bcache unlock кладёт ключ в _uid.0, а mount берёт ключ из _ses? Надо подумать, насколько это похоже на то, что происходит в cryptsetup. Получается, что в результате именно процесс mount должен иметь доступ к _uid.0 (т. е. шарить _ses с _uid.0). Ну, это жопа, PR 6832 тебе никак не поможет, потому что mount может быть запущен из совершенно любого юнита, хоть из своего, хоть из юзерской сессии (т. е. по транзитивности из юнита той программы, которая тебя залогинила, каковой может быть совершенно любая программа). Кажется, таки нужно писать Кенту и просить его о том, чтобы mount явно забирал ключ из _uid.0.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 8)
Ответ на: комментарий от intelfx

А этот сыр-бор не был из-за того, что в _uid.0 развели помойку и systemd решил разделить ее на несколько насильно? Если так, то тогда должен быть официальный путь получше, чем

чтобы mount явно забирал ключ из _uid.0

, нет?

И вообще,

mount может быть запущен из совершенно любого юнита

я как-то думал, что mount за ключом никуда и не лезет и вообще ключи — не его дело. Вроде логично класть его при unlock и забирать его уже из kernelspace. ЯННП?

Походу надо взглянуть на это утром свежим взглядом, а потом внятно пожаловаться Кенту. Даже если он не единственный, кто полностью представляет картину, думать, решать и чинить все равно ему =)

t184256 ★★★★★
() автор топика
Ответ на: комментарий от t184256

А этот сыр-бор не был из-за того, что в _uid.0 развели помойку и systemd решил разделить ее на несколько насильно? Если так, то тогда должен быть официальный путь получше, чем [чтобы mount явно забирал ключ из _uid.0], нет?

Без понятия. Возможно, ты прав, но с cryptsetup-ом официальный путь именно такой (ask-password кладёт ключ в _uid.0, cryptsetup забирает его из _ses, которая связана с _uid.0).

я как-то думал, что mount за ключом никуда и не лезет и вообще ключи — не его дело. Вроде логично класть его при unlock и забирать его уже из kernelspace. ЯННП?

Ну в смысле не сам /usr/bin/mount, а кернельная часть. Она в том же контексте исполняется, насколько я помню (из собственных кернельных приключений с reiser4).

внятно пожаловаться Кенту

Да, это имеет смысл.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Ну в смысле не сам /usr/bin/mount, а кернельная часть. Она в том же контексте исполняется, насколько я знаю.

Занятно.

Слушай, давно хотел спросить (и может даже уже и спрашивал) — как ты дошел до жизни такой? Ты вроде не бородат и не старше меня вдвое, а шаришь как будто втрое.

Я-то сам создал себе изврата с неизвестным мне дистром и сырой как новорожденный медведь ФС, дошел до затыка, три вечера всрал на раскручивание этой проблемы ради фана и понял, что «исправить смог», а ничего не понял.

Ты же оперируешь всеми этими понятиями и их взаимоотношениями так, как будто у тебя каждый вечер такой уже лет 10. В обсуждениях systemd вообще выглядишь так, как будто все эти коммиты если не написал, то как минимум аппрувил. Где ты взял столько проблем, чтобы дойти до этого уровня? =)

t184256 ★★★★★
() автор топика
Ответ на: комментарий от t184256

как будто у тебя каждый вечер такой уже лет 10

this :)

intelfx ★★★★★
()

Это как раз тот единственный случай, когда Поцеринг всё правильно сделал. А ты ССЗБ.

Quasar ★★★★★
()
Ответ на: комментарий от intelfx

написал ему в IRC. вроде мысль донес.

[11:25] <kmo> sigh
[11:25] <kmo> i hate all that keyring crap

t184256 ★★★★★
() автор топика
Ответ на: комментарий от Quasar

Естественно Поттеринг прикрыл опасную дыру, через которую у меня все работало.

Я вообще-то считаю, что он красавчик и все делает правильно, решительно, офигенно и на C, как какой-то герой из мифов. Заголовок и прочие восклицания высмеивают криворучек, у которых вообще не знаю каким чудом pulseaudio шипит, а systemd не systemdит. Уже лет 10 все на него жалуются, а мне не на что, все тупо работает.

t184256 ★★★★★
() автор топика

Первый раз Поттеринг мне что-то сломал!

Именно так и становятся линуксоидами 😉

fornlr ★★★★★
()
Ответ на: комментарий от ozz_is_here

Ничего не утверждаю, но когда мои кривые руки ревертят его коммит, все начинает работать.

t184256 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.