以 root 身份运行时和以普通用户身份运行时文件所有权有何不同?

以 root 身份运行时和以普通用户身份运行时文件所有权有何不同?

当尝试将.deb包转换为.rpm使用外星人,我使用这个命令:

$ alien -r foo.rpm

但它抱怨如下:

> Warning: alien is not running as root!
> Warning: Ownerships of files in the generated packages will probably be wrong.
  1. 以 root 身份运行时和以普通用户身份运行时文件所有权有何不同?

  2. 为什么包中的文件所有权很重要?

答案1

Debian 的 deb 包很简单,包中要安装的所有文件都存储在档案中。

此存档包含完整的文件树,以及它们的权限和所有权数据。在安装过程中,存档会按原样提取到根文件系统中。

一个例子

fping 软件包包含一个带有以下文件的档案:


 /usr/bin/fping
 /usr/bin/fping6
 /usr/share/doc/fping/README
 /usr/share/doc/fping/changelog.Debian.gz
 /usr/share/doc/fping/changelog.gz
 /usr/share/doc/fping/copyright
 /usr/share/lintian/overrides/fping
 /usr/share/man/man8/fping.8.gz
 /usr/share/man/man8/fping6.8.gz

权限和所有者数据(所有者几乎总是 root)仅从档案中获取。

考虑到这一点,如果没有超级用户权限,就不可能提取保留正确所有权的档案。在不了解 rpm 和 alien 的内部工作原理的情况下,我猜 alien 在转换过程中提取了源档案。

回答您的问题:

以 root 身份运行时和以普通用户身份运行时文件所有权有何不同?

普通用户只能创建自己拥有的文件,并且不能更改文件的所有权。

为什么包中的文件所有权很重要?

也许可以,也许不行。请记住:如果不是 root 用户,文件将归转换软件包的 uid 所有。虽然让非特权用户在 /usr/bin 中安装二进制文件不是好做法,但它可能会起作用。但是当安装的内容必须由 root 用户拥有时,它将中断。

回到示例,fping 需要 setuid root 才能工作 -> 由于所有权错误,包损坏。

相关内容