在脚本中运行sudo将uid设置为当前用户而不是root uid

时间:2015-11-17 13:04:54

标签: bash sudo

我有一个创建文件系统档案的脚本。为此我需要超级用户权限,但我不希望用sudo运行整个脚本,只是创建存档的特定行。

问题是,当我使用'sudo'为归档命令添加前缀时,在归档内创建的文件都有我的uid(1000),而不是root uid(0)。当此文件系统稍后被解压缩到目标平台时,我们以root身份启动它,尝试执行需要超级用户权限的操作失败:系统认为root帐户应该具有uid 1000而不是0。

如何让tar命令以root身份运行,同时在结果中也有正确的uid?

1 个答案:

答案 0 :(得分:3)

tar默认保留文件在文件系统上的权限,所有权等。

您可以使用--owner=USER--group=USER标记来覆盖它。

此外,您可以告诉tar使用存储在tar文件中的数字所有权和组信息,而不是使用--numeric-owner参数的名称等效项(如果名称在不同系统上有所不同)。

因此,如果root命令需要tar的唯一原因是在tarball中设置所有权等,那么根本不需要它。