2016-12-20 11 views
0

Ich habe problematisch Anwendungsfall:Wie führe ich den Befehl in Perl ohne Sudo aus?

ich Perl-Skript laufen mit sudo (Jenkins):

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

Das Skript führt mehrere Befehle von CLI.

einer von ihnen ist: $ pod spec lint, die mit Fehler fehlschlägt: Cannot run pod as root.

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

Ich möchte nicht entfernen sudo.

Wie kann ich bestimmte Befehle in das Skript ohne Super-Benutzer ausführen?

Antwort

2

Von man sudo:

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

Verwenden Sie die -u Flagge einen Benutzer angeben, die nicht der Superuser ist, aber die Berechtigungen benötigt tun, was Sie tun möchten.

Ich möchte nicht Jenkins laufenden Test-Code als normaler Benutzer obwohl (noch als der Superbenutzer).

Ein besserer Ansatz wäre, den Besitz und die Berechtigungen der Dateien und Verzeichnisse festlegen, die Jenkins Berechtigung erteilen zugreifen muss mit einer Gruppe, machen Jenkins als Mitglied dieser Gruppe läuft, und dann sudo entfernen.

3

Sie sollten sudo my $command = "sudo -u $username /usr/local/bin/pod spec lint $POD_SPEC_FILE_ABS --verbose";

verwenden
Verwandte Themen