tar 的 -p(保留权限)标志实际上保留了什么?

tar 的 -p(保留权限)标志实际上保留了什么?

-p在创建和提取 tarball 时,该标志实际上保留了什么?是rwx它保留的权限吗?

当我创建一个htdocs/由 root 拥有的 tarball 时,将其提取到我的本地机器会将所有权从 root 更改为我的用户。

答案1

所有权和权限是两码事。该-p标志保留权限. 在 *nix 系统上,普通用户不能将文件所有权更改为非自己的用户。

正如解释的那样这里

只有有效用户 ID 等于文件的用户 ID 或具有适当权限的进程才可以更改文件的所有权。如果 _POSIX_CHOWN_RESTRICTED 对路径有效:

  • 只有具有适当权限的进程才能更改用户 ID。

  • 对于有效用户 ID 等于文件的用户 ID 但没有适当权限的进程,当且仅当所有者等于文件的用户 ID 或 (uid_t)-1,并且组等于调用进程的有效组 ID 或它的某个补充组 ID 时,才允许更改组 ID。

@Gilles 很好地解释了这背后的原因Unix 和 Linux 答案:

之所以有此限制,是因为将文件泄露给其他用户可能会导致一些不常见但仍然很重要的情况发生。例如:

  • 如果系统启用了磁盘配额,Alice 可以在只有她可以访问的目录下创建一个全球可写文件(因此其他任何人都无法访问该全球可写目录),然后运行 ​​chown 使该文件归另一个用户 Bill 所有。这样,即使只有 Alice 可以使用该文件,该文件也会计入 Bill 的磁盘配额。
  • 如果 Alice 把一个文件交给 Bill,则没有任何证据证明该文件不是 Bill 创建的。如果该文件包含非法或其他有危害的数据,则可能会出现问题。
  • 某些程序要求其输入文件属于特定用户,以便对请求进行身份验证(例如,文件包含程序将代表该用户执行的一些指令)。这通常不是一种安全的设计,因为即使 Bill 创建了一个包含语法正确的指令的文件,他也可能无意在此时执行这些指令。尽管如此,允许 Alice 创建包含任意内容的文件并将其作为 Bill 的输入只会让事情变得更糟。

因此,即使您使用 tar 的--same-owner标志,您仍需要提取文件以root保留所有权。该标志默认为root,因此您需要的是:

sudo tar xpf foo.tgz

答案2

tar 还有两个有趣的选项:

--same-owner
       try extracting files with the same ownership as exists in the ar‐
       chive (default for superuser)

--no-same-owner
       extract files as yourself (**default for ordinary users**)

第二个是默认的,因此您可以添加--same-owner以保存您的用户。您可能必须使用 来执行此操作sudo

除此之外:这只适用于支持 POSIX 的系统。除 Ubuntu 之外的操作系统可能没有这两个选项(它们不是标准的)。

答案3

要保留所有者,请以 root 身份运行或在提取时使用 --same-owner 标志和 -p 标志。

相关内容