web-dev-qa-db-ja.com

LinuxマシンからSolarisにスナップショットを「zfs送信」するときにACLが壊れている

ホームディレクトリをホストするUbuntuマシンでZFSを実行しています。プールには次のACL設定があります。

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

ここに、同じ権限を持つ2つの通常のファイルがあります。

# 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--

毎晩、Solaris8でZFSを実行しているマシンに増分スナップショットを送信します

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)にACLが設定されていないことがわかります。

# /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

私の質問は今です:SolarisホストのACLでユーザーがスナップショットをマウントして自分のファイルを読み取ることができるように、UbuntuからSolarisへのスナップショット作成を設定するにはどうすればよいですか?最近バックアップされたすべてのファイルが影響を受けているようです。

3
Pavel

Solaris 11 ZFSは、POSIXACLではなくNFSv4ACLを使用します。 LinuxにはZFS上にNFSv4ACLがまったくなく、決してないようです。 NFSv4ACLはPOSIXACLのスーパーセットですが、ファイルの移動/コピー中にPOSIXACLをNFSv4ACLに転送/変換できるのはSolarisだけのようです。

したがって、結論として、ZFSスナップショットでACLを保持する方法がわかりません。 Linux-> Linuxスキームを使用するか、Solaris-> Solaris、Solaris-> FreeBSDまたはFreeBSD-> FreeBSDスキームを使用します(どちらにもNFSv4 ACLがあります)。

3
drookie