2016-12-20 2 views
0

У меня есть проблематичный случай использования:Как запустить команду в Perl без sudo?

Я бегу Perl скрипт с sudo (от Jenkins):

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

Скрипт запускает несколько команд из CLI.

один из них: $ pod spec lint с ошибкой: Cannot run pod as root.

my $command = "/usr/local/bin/pod spec lint $POD_SPEC_FILE_ABS --verbose";  
my $podResults = `$command`; 

Я не хочу удалять sudo.

Как я могу запустить определенную команду в скрипте без суперпользователя?

ответ

2

От man sudo:

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

Используйте -u флаг, чтобы указать пользователь, не суперпользователь, но имеет разрешение, необходимое, чтобы сделать то, что вы хотите сделать.

Я бы не хотел, чтобы Jenkins запускал тестовый код как обычный пользователь, хотя и не был суперпользователем.

Лучше было бы установить права собственности и права доступа к файлам и каталогам, что Дженкинс должен иметь доступ к выдаче разрешения с использованием группы, делает Дженкинс работать в качестве члена этой группы, а затем удалить sudo.

3

Вы должны использовать sudo my $command = "sudo -u $username /usr/local/bin/pod spec lint $POD_SPEC_FILE_ABS --verbose";

Смежные вопросы