Summary: | Не работает setfacl для файлов, расположенных в сетевых (autofs) папках | ||||||
---|---|---|---|---|---|---|---|
Product: | Branch p10 | Reporter: | rsrs <rstaganrog> | ||||
Component: | autofs | Assignee: | Sergey Bolshakov <sbolshakov> | ||||
Status: | NEW --- | QA Contact: | qa-p10 <qa-p10> | ||||
Severity: | normal | ||||||
Priority: | P5 | CC: | alimektor, monastirskiyii | ||||
Version: | не указана | ||||||
Hardware: | x86_64 | ||||||
OS: | Linux | ||||||
See Also: | https://bugzilla.altlinux.org/show_bug.cgi?id=52333 | ||||||
Attachments: |
|
Стенды: Alt Workstation 10.2 x86_64 Alt Server 10.2 x86_64 Версия пакета: acl-2.3.1-alt1 Предварительные условия: Развёрнутый Samba DC сервер Клиент, введённый в домен Расшаренная папка /var/share с созданным в ней файлом test.txt Шаги воспроизведения: 1) На сервере получить UUID объекта групповой политики: # samba-tool gpo listall | grep -B1 'Default Domain Policy' | head -1 2) На клиенте от доменного пользователя получить ключ Kerberos для администратора домена $ kinit administrator 3) Запустить приложение gpui-main с указанием объекта ГП: $ gpui-main -p 'smb://dc.<domain.name>/sysvol/<domain.name>/Policies/{UUID}' 4) Перейти в раздел Компьютер - Настройки - Настройки Системы - Сетевые диски - Добавить сетевой диск: Путь: smb://dc/share/ Название: share Отметить чек-боксы: Показать диск/Показать все диски Сохранить 5) На клиенте авторизоваться администратором домена и выполнить команду (work - доменный пользователь): $ setfacl -m u:work:rwx /media/gpupdate/drives.system/share/text.txt Результат: При выполнении команды возникает ошибка: setfacl: /media/gpupdate/drives.system/share/: Неподдерживаемая операция Ожидаемый результат: Корректное выполнение команды Дополнительно: В локальных папках команда выполняется успешно Ошибка также воспроизводится для расшаренных папок, смонтированных с помощью autofs (In reply to Монастырский Илья from comment #1) У вас файловая система по той или иной причине не поддерживает операцию, а вы перевешиваете багу на утилиту, которая просто вызывает сисколл setxattr()... (Ответ для Dmitry V. Levin на комментарий #2) > (In reply to Монастырский Илья from comment #1) > > У вас файловая система по той или иной причине не поддерживает операцию, а > вы перевешиваете багу на утилиту, которая просто вызывает сисколл > setxattr()... Если файловая система поддерживают операцию над файлом, при обращении к нему, как лежащим в локальной папке в корне файловой системы создать общую папку /public, то очевидно, что файловая система ПОДДЕРЖИВАЕТ операцию. Другое дело, если к физически той же папке /public (файловая система-то не изменилась) обратиться через монтирование сетевого ресурса, созданного на этой же папке /public - то к ТОМУ ЖЕ САМОМУ файлу на ТОЙ ЖЕ САМОЙ файловой системе операция уже не применяется. Т.е. препятствием здесь выступает способ доступа к файлу - через смонтированную средствами autofs папку. Другими словами autofs монтирование не позволяет применить операцию к файлу, физически лежащему на "правильной" файловой системе. (Ответ для Dmitry V. Levin на комментарий #2) > (In reply to Монастырский Илья from comment #1) > > У вас файловая система по той или иной причине не поддерживает операцию, а > вы перевешиваете багу на утилиту, которая просто вызывает сисколл > setxattr()... Скорее бага не утилиты, а параметров монтирования сетевого диска, не позволяющих отработать утилите. |
Created attachment 16182 [details] Настройки ОС и тестовый скрипт для воспроизведения ошибки + лог тестового скрипта Если файл или папка размещёны в сетевой папке, смонтированной при помощи autofs, то попытка изменить права доступа к ним (setfacl) завершается ошибкой "Неподдерживаемая операция". Ошибка проявляется даже в том случае, если при монтировании autofs указать опцию cifsacl. Если то же самое действие выполнить по отношению к этому же файлу, но расположенному в локальной папке, то setfacl выполняется успешно, без ошибок. -- В прилагаемом примере - Альт Рабочая станция 10.3, имя компьютера: alt10-92 - MS AD: uszn.local - alt10-92 введён в домен uszn.local - в uszn.local есть два пользователя domainuser (администратор домена) и domainuser2 (обычный пользователь) -- Подготовительные действия. 1. Установить Альт Рабочая станция 10.2 (alt10-92) и обновить её (dist-upgrade). 2. Сразу после этого ввести компьютер в домен uszn.local. 3. На alt10-92 в корне файловой системы создать общую папку /public (см. прилагаемый файл /etc/samba/smb.conf) В результате эта общая папка становится доступна так: \\alt10-92.uszn.local\public\ \\alt10-92\public\ 4. Подключить эту общую samba-папку /public двумя разными способами (autofs): 4.1 С помощью групповой политики ADMC (см. скриншот "Групповая политика.png") Компьютер / Настройки / Настройки системы / Сетевые диски в папку /media/gpupdate/drives.system/public 4.2 Настройкой autofs файлов (см. прилагаемые файлы /etc/auto.master и /etc/auto.tab) с опцией монтирования cifsacl - в папку /mnt/auto/public Для простоты все действия выполняются на ОДНОМ и том же компьютере alt10-92. Поэтому после применения политик и перезапуска службы autofs две сетевые папки на alt10-92 /media/gpupdate/drives.system/public /mnt/auto/public отбражают содержимое локальной папки на том же alt10-92 /public -- В результате такой подготовки alt10-92 оказывается в состоянии - сразу после установки ОС и её обновления (dist-upgrade) - плюс только ввод alt10-92 в домен MS AD и - плюс только выполнение п.3 и п.4. Все остальные настройки ОС остаются по умолчанию. -- После подготовки, описанной выше, можно запустить от имени доменного пользователя domainuser прилагаемый тестовый скрипт test.sh. Этот скрипт с помощью setfacl делает три одинаковых попытки предоставить полный доступ доменным пользователям domainuser и domainuser2 к физически ОДНОМУ И ТОМУ ЖЕ же файлу /public/domainuser.txt. Причём, первая попытка применения setfacl, когда файл раположен в локальной папке, завершается успешно. Две другие аналогичные попытки выполнения тех же действий к физически тому же самому файлу domainuser.txt, но доступ к нему уже через autofs смонтированные папки, завершаются ошибкой "Неподдерживаемая операция" (см. прилагаемый лог выполнения скрипта test.log) Прилагаю архив test.zip с файлами: test.sh test.log testparm.log /etc/samba/smb.conf /etc/auto.master /etc/auto.tab "Групповая политика.png"