Bug 50445

Summary: Не работает setfacl для файлов, расположенных в сетевых (autofs) папках
Product: Branch p10 Reporter: rsrs <rstaganrog>
Component: autofsAssignee: 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:
Description Flags
Настройки ОС и тестовый скрипт для воспроизведения ошибки + лог тестового скрипта none

Description rsrs 2024-05-24 20:15:28 MSK
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"
Comment 1 Монастырский Илья 2024-06-09 12:53:38 MSK
Стенды: 
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
Comment 2 Dmitry V. Levin 2024-06-09 13:07:17 MSK
(In reply to Монастырский Илья from comment #1)

У вас файловая система по той или иной причине не поддерживает операцию, а вы перевешиваете багу на утилиту, которая просто вызывает сисколл setxattr()...
Comment 3 rsrs 2024-06-09 13:19:45 MSK
(Ответ для Dmitry V. Levin на комментарий #2)
> (In reply to Монастырский Илья from comment #1)
> 
> У вас файловая система по той или иной причине не поддерживает операцию, а
> вы перевешиваете багу на утилиту, которая просто вызывает сисколл
> setxattr()...

Если файловая система поддерживают операцию над файлом, при обращении к нему, как лежащим в локальной папке в корне файловой системы создать общую папку /public, то очевидно, что файловая система ПОДДЕРЖИВАЕТ операцию.

Другое дело, если к физически той же папке /public (файловая система-то не изменилась) обратиться через монтирование сетевого ресурса, созданного на этой же папке /public - то к ТОМУ ЖЕ САМОМУ файлу на ТОЙ ЖЕ САМОЙ файловой системе операция уже не применяется. Т.е. препятствием здесь выступает способ доступа к файлу - через смонтированную средствами autofs папку. Другими словами autofs монтирование не позволяет применить операцию к файлу, физически лежащему на "правильной" файловой системе.
Comment 4 rsrs 2024-06-09 14:25:55 MSK
(Ответ для Dmitry V. Levin на комментарий #2)
> (In reply to Монастырский Илья from comment #1)
> 
> У вас файловая система по той или иной причине не поддерживает операцию, а
> вы перевешиваете багу на утилиту, которая просто вызывает сисколл
> setxattr()...

Скорее бага не утилиты, а параметров монтирования сетевого диска, не позволяющих отработать утилите.