我有一个创建文件系统档案的脚本。为此我需要超级用户权限,但我不希望用sudo运行整个脚本,只是创建存档的特定行。
问题是,当我使用'sudo'为归档命令添加前缀时,在归档内创建的文件都有我的uid(1000),而不是root uid(0)。当此文件系统稍后被解压缩到目标平台时,我们以root身份启动它,尝试执行需要超级用户权限的操作失败:系统认为root帐户应该具有uid 1000而不是0。
如何让tar命令以root身份运行,同时在结果中也有正确的uid?
答案 0 :(得分:3)
tar
默认保留文件在文件系统上的权限,所有权等。
您可以使用--owner=USER
和--group=USER
标记来覆盖它。
此外,您可以告诉tar使用存储在tar文件中的数字所有权和组信息,而不是使用--numeric-owner
参数的名称等效项(如果名称在不同系统上有所不同)。
因此,如果root
命令需要tar
的唯一原因是在tarball中设置所有权等,那么根本不需要它。