使用 acl 解压 tarball 时出现问题

使用 acl 解压 tarball 时出现问题

我在对一组设置了 acl 权限的文件进行解皮时收到错误“未知文件类型 'A',提取为普通文件”。

我在 Solaris 中使用 .tar 文件创建了 tar 文件tar -cpfv Tarfilename.tar directory。如果我用 解压tar xvpf Tarfilename.tar,它在 Solaris 中运行得很好。我已将 tar 文件复制到 Linux 并尝试使用解压tar xvpf,它会抛出警告“未知文件类型'A',提取为普通文件”并创建没有 ACL 权限的文件。

tar --version在Linux中:tar (GNU tar) 1.15.1

答案1

Solaris 使用 NFSv4 ACL,而 Linux 使用 POSIX ACL。它们不直接兼容。

gnu-tar正如您所指出的,虽然Linux(自然地)使用tar.

根据 Solaristar(1)手册页:

p

将指定文件恢复为其原始模式和 ACL(如果适用),忽略当前的 umask(1)。如果以超级用户身份调用并指定 x 函数字母,则这是默认行为。如果超级用户、SETUID 和粘性信息也被提取,并且文件将以其原始所有者和权限恢复,而不是由 root 拥有。当此函数修饰符与 c 函数一起使用时,将在 tar 文件中创建 ACL 以及其他信息。当使用以前版本的 tar 提取具有 ACL 的 tar 文件时,会发生错误。

gnu-tar如果您使用该标志来保留权限,则应该在 Solaris 上使用-p,并且 tar 将在 Linux 系统上提取。

如果您使用的是 Solaris 11,请安装gnu-tar位于/usr/gnu/bin/tar或中的软件包/usr/gnu/bin/gtar。如果您使用的是 Solaris 11 之前的版本,则需要gnu-tar从 Sun FreeWare 获取(可以在 Solaris Companion CD 上找到)。

相关内容