Назад | Перейти на главную страницу

Нарушенные списки ACL при отправке zfs снимка с машины Linux в Solaris

Я запускаю ZFS на машине Ubuntu, на которой размещены наши домашние каталоги. Пул имеет следующие настройки ACL:

# zfs get all homes | grep acl
homes  aclinherit            restricted             default
homes  acltype               off                    default

Вот у меня два обычных файла с одинаковыми разрешениями:

# getfacl 1.txt 2.txt 
# file: 1.txt
# owner: usr
# group: grp
user::rw-
group::r--
other::r--

# file: 2.txt
# owner: usr
# group: grp
user::rw-
group::r--
other::r--

Каждую ночь я отправляю инкрементный снимок на машину с ZFS на Solaris 8.

zfs send -i homes@$PREV_BACKUP homes@$CURRENT_BACKUP | \
   ssh solarishost zfs receive -vFd homes_backup

Файловая система на хосте Solaris имеет следующие настройки ACL:

# zfs get all homes_backup | grep acl
homes_backup  aclmode               passthrough            local
homes_backup  aclinherit            restricted             default

Когда я просматриваю файлы в моментальном снимке на хосте Solaris, я вижу, что в самом последнем (1.txt) не установлены списки управления доступом:

# /usr/bin/ls -v 1.txt 2.txt 
-rw-r--r--   1 2428     2000        2170 Oct 12 13:42 1.txt
-rw-r--r--   1 2428     2000        2146 May 31  2013 2.txt
     0:owner@:execute:deny
     1:owner@:read_data/write_data/append_data/write_xattr/write_attributes
         /write_acl/write_owner:allow
     2:group@:write_data/append_data/execute:deny
     3:group@:read_data:allow
     4:everyone@:write_data/append_data/write_xattr/execute/write_attributes
         /write_acl/write_owner:deny
     5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

Теперь, когда я монтирую снимок solarishost-snapshot на клиенте Ubuntu, я вижу файлы, и кажется, что они имеют одинаковые разрешения, но я не могу читать 1.txt:

# cat 2.txt >/dev/null; echo $?
0
# cat 1.txt >/dev/null; echo $?
cat: 1.txt: Permission denied
1

Опять же, клиент Ubuntu выглядит так же:

# getfacl 1.txt 2.txt
# file: 1.txt
# owner: usr
# group: grp
user::rw-
group::r--
mask::rwx
other::r--

# file: 2.txt
# owner: usr
# group: grp
user::rw-
group::r--
mask::rwx
other::r--

# ls -l 1.txt 2.txt 
-rw-r--r--+ 1 usr grp 2.2K Oct 12 13:42 1.txt
-rw-r--r--+ 1 usr grp 2.1K May 31  2013 2.txt

Мой вопрос сейчас: как мне настроить создание моментальных снимков из Ubuntu в Solaris, чтобы списки управления доступом на хосте Solaris позволяли пользователям монтировать моментальные снимки и читать свои собственные файлы? Похоже, что затронуты все недавно скопированные файлы.

Solaris 11 ZFS использует ACL NFSv4, а не ACL POSIX. В Linux вообще нет списков ACL NFSv4 для ZFS, и, похоже, их никогда не будет. Хотя ACL NFSv4 являются надмножеством ACL POSIX, похоже, что только Solaris может передавать / переводить ACL POSIX в ACL NFSv4 во время перемещения / копирования файлов.

Итак, в заключение, я не вижу способа сохранить ACL в снимках ZFS. Либо используйте схему Linux -> Linux, либо используйте схему Solaris -> Solaris, Solaris -> FreeBSD или FreeBSD -> FreeBSD (у обеих есть списки ACL NFSv4).