我想构建一个 tar 文件普通(非 root)用户一些准备好的二进制文件和配置文件,如下所示;
etc/binaries.conf
usr/bin/binary1
usr/bin/binary2
意味着要解压到该/
目录下的文件系统中。
就像传统的软件包 .deb、.rpm 等,但我需要“独立于包管理器”。所以可能我只会有一个 .tar 文件(也许应该添加一些 gzip、bzip、lzip 文件,但那是在外面)。
问题/疑问
我的问题是我不想要将此 tar 构建为根用户,我想知道是否有办法将此 tar 构建为普通(非 root)用户然后,当 .tar 文件分发到计算机并且真实root
用户提取这些二进制文件时,它们将作为所有者拥有的文件进行安装根用户或提取二进制文件的用户?
例子
因为现在,当我刚刚创建 .tar 文件作为普通(非 root)用户和
$ tar cf dist.tar dist/
然后将 .tar 解压为根用户与
# tar xf dist.tar -C /
我看到二进制文件和配置文件的所有者是普通用户,而不是 root 用户。
$ ls -la /usr/bin/binary1
-rwxr-xr-x 1 user user 30232 jun 20 19:06 /usr/bin/binary1
我想要拥有
$ ls -la /usr/bin/binary1
-rwxr-xr-x 1 root root 30232 jun 20 19:06 /usr/bin/binary1
需要澄清的是,这种手工制作的包装对于封闭基础设施中的某些任务来说是非常具体的,所以现在使用 .deb、.rpm 或任何其他更复杂的包装系统不是一个选择。
答案1
这萃取决定的是所有权,而不是创建档案的。您可以通过查看存档的目录来看到这一点,例如,
tar tvf dist.tar
如果以普通用户身份创建文件
tar --owner 0 --group 0 dist.tar dist
施展魔法