如何在没有sudo的情况下在Perl中运行命令?

时间:2016-12-20 12:49:21

标签: perl sudo

我有问题的用例:

我使用$ pod spec lint(来自Jenkins)运行Perl脚本:

  

sudo / usr / bin / perl /Users/snaggs/scripts/build_ios.pl $ {BUILD_NUMBER}   $ Version $ isPublish

该脚本从CLI运行多个命令。

其中一个是:Cannot run pod as root失败并显示错误:my $command = "/usr/local/bin/pod spec lint $POD_SPEC_FILE_ABS --verbose"; my $podResults = `$command`;

sudo

我不想删除{{1}}。

如何在没有超级用户的情况下将特定命令运行到脚本中?

2 个答案:

答案 0 :(得分:3)

您应该使用sudo my $command = "sudo -u $username /usr/local/bin/pod spec lint $POD_SPEC_FILE_ABS --verbose";

答案 1 :(得分:2)

来自man sudo

  

sudo -v [-AknS] [-g group] [-h host] [-p prompt] [ - u user]

使用-u标记指定不是超级用户但具有执行您想要的操作所需权限的用户。

我不希望Jenkins作为普通用户运行测试代码(也不是超级用户)。

更好的方法是设置Jenkins需要访问的文件和目录的所有权和权限,以使用授予权限,使Jenkins作为该组的成员运行,然后删除sudo