我有问题的用例:
我使用$ 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}}。
如何在没有超级用户的情况下将特定命令运行到脚本中?
答案 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
。