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


22

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

当我创建htdocs/root拥有的tarball时,将其解压缩到本地计算机会将所有权从root更改为我的用户。


5
也许您应该尝试将归档文件提取为root。无法将其他用户的权限设置为普通用户,因此我认为tar也不能这样做。请告诉我这是否有效。
Louis Matthijssen 2014年

“本地机器”?请说明这台计算机的操作系统;)
Rinzwind 2014年

还告诉我们您正在使用什么文件系统。源和目标都一样。
2014年

来源:Red Hat Enterprise Linux Server release 6.5 (Santiago) 目标:Ubuntu 13.10 两种用途都使用GPT
nicoX 2014年

旁注:tar保留权限。-p--same-owner/ --no-same-owner(如答案所示)是提取标志。它们在归档时没有效果
Fr0zenFyr

Answers:


19

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

正如解释在这里

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

  • 更改用户标识仅限于具有适当特权的进程。

  • 当且仅当所有者等于文件的用户ID或(uid_t)-1并且组等于时,才允许将有效用户ID等于文件的用户ID的进程更改组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

9

tar还有2个有趣的选项:

--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
该协议--same-owner不适用于非root用户,他们无权将所有权设置为除自己以外的任何人。这是由POSIX定义的。
terdon 2014年

4

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


3
无论如何,都需要以root用户身份运行。非root用户不能将文件所有权更改为其他用户。
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.