| Summary: | samba kerberos authorization is broken | ||
|---|---|---|---|
| Product: | [ROSA-based products] ROSA Fresh | Reporter: | Vladimir Potapov <v.potapov> |
| Component: | Packages from Main | Assignee: | Mikhail Novosyolov <m.novosyolov> |
| Status: | VERIFIED FIXED | QA Contact: | ROSA Linux Bugs <bugs> |
| Severity: | blocker | ||
| Priority: | Highest | CC: | m.novosyolov, n.mozgovoy, v.potapov |
| Version: | RED | Flags: | v.potapov:
qa_verified+
v.potapov: published+ |
| Target Milestone: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Platform: | 2021.1 | ROSA Vulnerability identifier: | |
| RPM Package: | ISO-related: | ||
| Bad POT generating: | Upstream: | ||
| Attachments: |
Рабочие параметры монтирования в Calculate Linux
Флаги сборки samba в рабочей конфигурации на Calculate/Gentoo Флаги сборки mit-krb5 в рабочей конфигурации на Calculate/Gentoo Скрипт автоматического монтирования сетевых шар в зависимости от группы пользователя |
||
|
Description
Vladimir Potapov
2016-09-03 13:14:24 MSK
I debug the issue with GDB mount.cifs receive empty password from krb5 but klist Ticket cache: FILE:/tmp/krb5cc_10003 Default principal: keleg@KELEG-HOME.RU Valid starting Expires Service principal 03.09.2016 17:03:44 04.09.2016 03:03:42 krbtgt/KELEG-HOME.RU@KELEG-HOME.RU renew until 10.09.2016 17:03:44 03.09.2016 17:03:44 04.09.2016 03:03:42 FRESH$@KELEG-HOME.RU wbinfo -u administrator guest krbtgt keleg А примерно как через gdb делался дебаг? (In reply to Mikhail N from comment #2) > А примерно как через gdb делался дебаг? ставится дебаг-пакет и запускается команда под дебаггером. подробностей не вспомню сейчас, но все стандартно было. Думаю, под дебагером гонять слишком сложный путь, можно попробовать привести в соответствие по версиям-патчам какой-нибудь федоре. На ядре в Росе 2016 года не было поддержки авторизации по Kerberos через CIFS по протоколам SMB 2 и 3, -sec=krb5 работало только для SMB v1. Но я не нашел информации, что samba переключала дефолтную версию протокола. https://superuser.com/a/1082464 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ceb1b0b9b4d1089e9f2731a314689ae17784c861 Баг актуален со всеми обновлениями. Причем Dolphin все нормально видит, а вот mount не монтирует. Про дефолтную версию протокола: https://git.samba.org/?p=cifs-utils.git;a=commitdiff;h=d93cabc638195b5a4274c2650477456f81651e75 ***** QA ASVISORY ***** keyutils 1.6-2 * updated from 1.5.10 to 1.6 * adjusted default config (/etc/request-key.conf) to make `mount -t cifs -o sec=krb5` work out of the box + https://abf.io/build_lists/3022596 + https://abf.io/build_lists/3022597 cifs-utils * updated from 6.8 to 6.9 + https://abf.io/build_lists/3022598 + https://abf.io/build_lists/3022599 ***** QA ASVISORY ***** Backported to rosa2014.1, fixed mount -t cifs -o sec=krb5 keyutils 1.6, rosa2014.1 + https://abf.io/build_lists/3022602 + https://abf.io/build_lists/3022603 mount -t cifs //win.keleg-home.ru/Users /mnt -o sec=krb5 mount error(2): No such file or directory smbclient //win.keleg-home.ru/Users -k Unable to initialize messaging context gensec_spnego_client_negTokenInit_step: Could not find a suitable mechtype in NEG_TOKEN_INIT session setup failed: NT_STATUS_INVALID_PARAMETER Надо бы strace -o cifs-krb5.log smbclient //win.keleg-home.ru/Users -k Потом файл cifs-krb5.log прикрепить сюда. По аналогии с https://bugzilla.altlinux.org/show_bug.cgi?id=33369#c19 Да вроде бы работает. kde4 ~ # smbclient //dc1.samba-dc1.loc/testdc1share -k gensec_spnego_client_negTokenInit_step: Could not find a suitable mechtype in NEG_TOKEN_INIT session setup failed: NT_STATUS_INVALID_PARAMETER kde4 ~ # kinit kinit: Client 'root@DC1.SAMBA-DC1.LOC' not found in Kerberos database while getting initial credentials kde4 ~ # klist klist: No credentials cache found (filename: /tmp/krb5cc_0) kde4 ~ # kinit test3@DC1.SAMBA-DC1.LOC Password for test3@DC1.SAMBA-DC1.LOC: Warning: Your password will expire in 41 days on Вт 18 июн 2019 16:59:11 kde4 ~ # klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: test3@DC1.SAMBA-DC1.LOC Valid starting Expires Service principal 08.05.2019 11:31:28 08.05.2019 21:31:28 krbtgt/DC1.SAMBA-DC1.LOC@DC1.SAMBA-DC1.LOC renew until 09.05.2019 11:31:24 kde4 ~ # smbclient //dc1.samba-dc1.loc/testdc1share -k tree connect failed: NT_STATUS_ACCESS_DENIED (тут у меня файловая шара коряво настроена, наверное) Не нужно strace, ошибку поймал. Убрал из keyutils ненужный патч, пока пусть такое уходит на QA, проблем в пакетах keyutils и cifs-utils не вижу, их пока стоит обновить в штатном порядке. Перенес их bug#9886 smbclient заработал, а вот mount по-прежнему нет. Вот тут https://superuser.com/a/1241316 пишут, что для переиспользования тикета керберос нужно указать доп. параметры: -o user=$USER,cruid=$USER,sec=krb5 Вроде бы мы так еще не пробовали. (In reply to Mikhail Novosyolov from comment #15) > Вот тут https://superuser.com/a/1241316 пишут, что для переиспользования > тикета керберос нужно указать доп. параметры: > > -o user=$USER,cruid=$USER,sec=krb5 > > Вроде бы мы так еще не пробовали. пробовали очень многое, в том числе и это mount.cifs //win/Users/Public /mnt -o user=$USER,cruid=$USER,sec=krb5 mount error(2): No such file or directory Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg) Created attachment 5167 [details] Рабочие параметры монтирования в Calculate Linux В чате Calculate Linux с одним пользователем долго пытались завести у него монтирование самбой с авторизацией по krb5, в результате получилось с параметрами на скриншоте. Важно: sec=krb5 должно стоять ПОСЛЕДНИМ параметром, иначе была ошибка типа "Required key not available". Также было выполнено добавление опции "-t" к вызову cifs.upcall (https://stackoverflow.com/a/42764571) Created attachment 5168 [details]
Флаги сборки samba в рабочей конфигурации на Calculate/Gentoo
Created attachment 5169 [details]
Флаги сборки mit-krb5 в рабочей конфигурации на Calculate/Gentoo
Created attachment 5170 [details]
Скрипт автоматического монтирования сетевых шар в зависимости от группы пользователя
Задачей было в зависимости от группы пользователя в домене монтировать разный набор сетевых шар. Я сочинил вот такой скрипт. На скриншоте его рабочий вариант. Запускается через pam_exec.so.
P.S. Пока что, говорят, с правами на чтение/запись затыки, но главное, что шара смонтировалась с авторизацией по Kerberos после длительной войны с ней.
Посмотрел код pam_mount. Он не делает никакой магии, а просто запускает mount -t cifs, при этом из pam берет переменную KRB5CCNAME, которую поставит один из предыдущих модулей pam, и затем просто ставит ее как переменную окружения при выхове mount -t cifs. Все. Ошибка "No such file or directory" наверное, говорит о том, что файл ccache ищется не там, где нужно. (In reply to Vladimir Potapov from comment #1) > I debug the issue with GDB > mount.cifs receive empty password from krb5 > but > > klist > Ticket cache: FILE:/tmp/krb5cc_10003 > Default principal: keleg@KELEG-HOME.RU > > Valid starting Expires Service principal > 03.09.2016 17:03:44 04.09.2016 03:03:42 krbtgt/KELEG-HOME.RU@KELEG-HOME.RU > renew until 10.09.2016 17:03:44 > 03.09.2016 17:03:44 04.09.2016 03:03:42 FRESH$@KELEG-HOME.RU > > wbinfo -u > administrator > guest > krbtgt > keleg Здесь билет керберос получен для пользователя с UID=1003, но монтирование выполняется от root, очевидно, что /tmp/krb5cc_10003 не будет найден и использован, потому что будет искаться /tmp/krb5cc_0. Что касается > with the old samba (4.1) - work correct в это не могу поверить, потому что здесь samba вообще никак не участвует. Суть монтирования по kerberos в том, чтоб использовать билет kerberos, и это не билет root. Концептуально неверно хотеть исправить этот баг. Это не баг. Так и должно быть. А раньше такое работать не могло, регрессией не является. => RESOLVED WONTFIX а через судо должно работать? (In reply to Vladimir Potapov from comment #23) > а через судо должно работать? Вряд ли, даже если попытаться effective user id сделать соответствующим пользователю-владельцу ccache. В Ubuntu /sbin/mount.cifs имеет SUID-бит, а в Росе нет. По идее, если поставить на него SUID бит, то можно будет от пользователя-владельца ccache запускать mount.cifs, а ccache подхватится и монтирование заработает, наверное, если стоит переменная окружения KRB5CCNAME, если ее PAM-модули поставят.
В Debian делают chmod u+s /sbin/mount.cifs уже 10 лет как:
cifs-utils (2:4.5-1) unstable; urgency=low
[ Christian Perrier ]
* New upstream release. Closes: #576314.
[ Steve Langasek ]
* Set mount.cifs suid-root, again supported upstream and required for use
in user mounts. Closes: #576713.
-- Steve Langasek <vorlon@debian.org> Mon, 31 May 2010 03:28:42 -0700
Вот баг: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=576713
в ядре 5.4.60 будут более понятные ошибки, если при монтировании с sec=krb5 проблемы с авторизацией: commit 582ee2cb6f905d5d3eaccfeda7adbbd4d782397b Author: Steve French <stfrench@microsoft.com> Date: Thu Jul 16 00:34:21 2020 -0500 smb3: warn on confusing error scenario with sec=krb5 commit 0a018944eee913962bce8ffebbb121960d5125d9 upstream. When mounting with Kerberos, users have been confused about the default error returned in scenarios in which either keyutils is not installed or the user did not properly acquire a krb5 ticket. Log a warning message in the case that "ENOKEY" is returned from the get_spnego_key upcall so that users can better understand why mount failed in those two cases. *** Bug 13157 has been marked as a duplicate of this bug. *** ********* QA ADVISORY ********* keyutils 1.6.3-5 - really fix mounting CIFS with KRB5! https://abf.io/build_lists/4388982 https://abf.io/build_lists/4388983 x86_64 https://abf.io/build_lists/4388984 https://abf.io/build_lists/4388985 https://abf.io/build_lists/4388986 Проверено пользователем: https://t.me/rosalinux/182192 ************************************** The update sent to testings keyutils-1.6.3-5 https://abf.io/build_lists/4388982 https://abf.io/build_lists/4388983 x86_64 https://abf.io/build_lists/4388984 https://abf.io/build_lists/4388985 https://abf.io/build_lists/4388986 ************************ Advisory ********************* - really fix mounting CIFS with KRB5! ******************************************************* QA Verified |