Wie führe ich ein Programm als root ohne "sudo" aus?

26223
UrEl

Ich habe ein bestimmtes Binärprogramm unter OS X, das nur als root ausgeführt werden kann.

Ich habe es satt, sudojedes Mal, wenn ich es anrufe, ein vorangestelltes Passwort einzugeben, und ich möchte, dass es automatisch als root ausgeführt wird, wenn ich es regelmäßig anrufe, ohne nach einem Passwort zu fragen.

Der Besitzer des Programms ist root und seine Gruppe ist wheel.

Ich habe versucht chmod ug+s, die Benutzer-ID und die Gruppen-ID bei der Ausführung auf root / wheel zu setzen, aber wenn ich das Programm ohne sudo ausführte, beschwert es sich immer noch, dass es nur mit sudo oder als root laufen kann.

9
Kann es zu einem bestimmten Zeitpunkt ausgeführt werden oder wenn ein Ereignis eintritt? Mark vor 12 Jahren 0
Unix-Gurus der alten Zeit würden bedeuten, dass das regelmäßige Aufrufen einer reinen Wurzeloperation von Hand bedeutet, dass Sie es falsch machen. Kann man das automatisieren? Oder als Daemon laufen? Weitere Details könnten Vorschläge für andere Lösungen enthalten. dmckee vor 12 Jahren 9
Ist das Programm tatsächlich im Besitz von root? Setuid / gid verwendet Benutzer / Gruppe der Datei. Daniel Beck vor 12 Jahren 0
... wobei unter "ausführlicher" beispielsweise auch angegeben wird, ob sich die Binärdatei dieses Programms auf einem NFS-Mount-Volume befindet und ob Sie die Mount-Option "nosuid" verwenden. Außerdem müssen Sie regelmäßig ein Programm als Superuser ausführen. JdeBP vor 12 Jahren 2
@dmckee Viele Mac-Benutzer führen Server-Software auf ihrer Workstation aus, und es ist häufig erforderlich, dass root für Dinge benötigt wird, die es wirklich nicht brauchen sollten ... aber das Umkonfigurieren eines LAMP-Stacks für den Betrieb ohne Root ist ein Ärgernis. Andererseits ist ein Neustart des Apache 20-mal am Tag und das Eintippen von Sudo jedes Mal auch ein Schmerz im Arsch. Dies ist eine einfache Lösung. Abhi Beckert vor 11 Jahren 0
Was hast du "chmod"? Das eigentliche Programm befindet sich im Paket / App. Hier finden Sie zum Beispiel * Disk Utility *: * `/ Applications / Utilities / Disk Utility.app/Contents/MacOS/Disk Utility` *. jww vor 8 Jahren 0

7 Antworten auf die Frage

14
Walter

Eine halbe Lösung für Ihr Problem:

Fügen Sie in der Sudoers-Datei Folgendes hinzu:

username ALL= NOPASSWD: /path/to/command 

Dann können Sie über die Befehlszeile Folgendes eingeben:

sudo command 

Der Befehl wird ausgeführt, ohne dass Sie nach Ihrem Kennwort gefragt werden. Dieser Befehl wird als root ausgeführt.

Beachten Sie, dass Sie den Benutzernamen durch Ihren tatsächlichen Benutzernamen ersetzen müssen.

Erstaunt, die beste Antwort unten zu finden. Vielen Dank! CDR vor 11 Jahren 0
FYI, um die andere Hälfte zu lösen (ohne den sudo-Befehl eingeben zu müssen), erstellen Sie einen Shell-Alias, der sudo im Befehl enthält (wie surm = sudo rm "$ @"). Walter vor 6 Jahren 0
4
NReilingh

Wenn Sie es wirklich als Daemon aus irgendeinem Grund nicht aufrufen kann (diese Frage würde in diesem Fall relevant sein), diese Methode kann zusammen gehackt werden, aber es ist ziemlich schmutzig, und haupt nicht sicher.

Das Konzept ist, es mit einem AppleScript zu starten. Sie müssen zunächst wissen, wie der Prozess von der Befehlszeile aus aufgerufen wird (was bedeutet, wenn Sie sudo bereits verwenden, müssen Sie alle Einstellungen vornehmen). Sie starten diesen Prozess mit dem do shell scriptBefehl, und anstatt Sudo zu verwenden, schreiben Sie Ihre Anmeldeinformationen in das AppleScript:

do shell script "/path/to/your/executable/here" user name "me" password "mypassword" with administrator privileges 

Ich wiederhole den Teil, dass dies unsicher ist: DIES BEDEUTET, DASS IHRE ADMIN-CREDS IN EINFACHEM TEXT AUFBEWAHRT WERDEN. Wenn überhaupt möglich, sollten Sie einen Weg finden, dies als LaunchDaemon zu hinterfragen.

Ein Weg zum "Runas" für deinen Mac :) Danke Vlueboy vor 12 Jahren 0
2
abdimuna

Unter OSX nehmen Sie an, das Programm, das Sie haben, befindet sich in / usr / local / bin / YourProgramName. Um dieses Problem zu beheben, geben Sie den folgenden Befehl ein: So ändern Sie die Benutzer-ID / Gruppen-ID für in den Dateien verwurzelte Dateihierarchien und nicht nur die Dateien selbst .

sudo chown -R $(whoami) /usr/local/bin/

... dann rufen Sie in Terminal Ihren Programmnamen auf, $ YourProgramName

Mein Problem war, dass die installierten Programme ohne entsprechende Berechtigungen installiert wurden. Daher habe ich die Verzeichnisse dieser Programme ausgeführt und sie laufen nun ohne Sudo. Vielen Dank! atwixtor vor 8 Jahren 0
1
KeithB

Sind Sie sicher, dass das Programm, das Sie ausführen möchten, tatsächlich eine Binärdatei und kein Shell-Skript ist. Die meisten Shells ignorieren Suid-Skripte, weil es wirklich sehr schwer ist, sie sicher auszuführen. Eine einfache Möglichkeit zur Überprüfung besteht darin, den fileBefehl im Programm zu verwenden.

0
DTest

Du kannst tun

sudo tcsh 

das wird Sie in eine Root-Shell setzen.

0
jet

Es sieht so aus, als würde das Programm selbst prüfen, ob es mit ID = 0 läuft

… Was natürlich der Fall ist, wenn es sich um einen UID-Superuser handelt (die oben genannten Bedenken beiseite lassen). Vermutlich möchten Sie sagen, dass das Programm nach _real_-UID 0 und nicht nach _effektiv_-UID 0 sucht. JdeBP vor 12 Jahren 1
-1
dag729

Du könntest es sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE.

Mit dem Kommentar von dmckee stimme ich dennoch völlig überein.

Wie würde das irgendetwas helfen? ⁠ Scott vor 6 Jahren 0