| Summary: | Не работает setfacl для файлов, расположенных в сетевых (autofs) папках | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Branch p10 | Reporter: | rsrs <rstaganrog> | ||||
| Component: | gpupdate | Assignee: | qa-team <qa-team> | ||||
| Status: | CLOSED NOTABUG | QA Contact: | qa-p10 <qa-p10> | ||||
| Severity: | normal | ||||||
| Priority: | P5 | CC: | alimektor, amakeenk, 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()... Скорее бага не утилиты, а параметров монтирования сетевого диска, не позволяющих отработать утилите. На мейнтейнера. После некоторого времени пришёл к выводу, что setfacl не ПОДДЕРЖИВАЕТСЯ
для клиента, где Samba Share примонтирована следующим образом:
1. mount -t cifs
2. autofs
3. через gpupdate (она же также autofs)
Но при этом присутствуют утилиты getcifsacl и setcifsacl. Пример:
1. Смонтировать шару:
mount -v -t cifs -o 'user=Administrator,password=<PASSWORD>,cifsacl' //dc/share /mnt/smbshare && l /mnt/smbshare
2. Получить ACL для тестового файла:
(cd /mnt/smbshare; getcifsacl hello.txt)
3. Добавить ACL для тестового пользователя:
(cd /mnt/smbshare; setcifsacl -a "ACL:testuser:ALLOWED/0x0/RWDPO" hello.txt)
4. Получить ACL для тестового файла:
(cd /mnt/smbshare; getcifsacl hello.txt) | grep testuser
Вывод:
ACL:testuser:ALLOWED/0x0/RWXDPO
Утилита setcifsacl работает, следовательно, ошибки нет. Также проверено
с autofs / gpupdate.
|
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"