Wie führe ich ein bestimmtes Programm als root ohne Passwortabfrage aus?

Ich muss etwas als sudo ohne Passwort ausführen, also habe ich visudo verwendet und dies meinem sudoers Datei:

MYUSERNAME ALL = NOPASSWD: /path/to/my/program 

Dann habe ich es ausprobiert:

$ sudo /path/to/my/program [sudo] password for MYUSERNAME: 

Warum wird nach einem Passwort gefragt? Wie kann ich Befehle als root mit einem Nicht-root-Benutzer ausführen / verwenden, ohne nach einem Passwort zu fragen?

Antwort

Sie Sie haben einen weiteren Eintrag in der Datei sudoers , die sich normalerweise unter /etc/sudoers befindet , die auch zu Ihrem Benutzer passt. Die NOPASSWD -Regel muss nach dieser Regel stehen, damit sie Vorrang hat.

Nachdem dies geschehen ist, sudo fordert normalerweise ein Kennwort für alle Befehle mit Ausnahme von /path/to/my/program an, mit dem Sie immer ausgeführt werden können, ohne nach Ihrem Kennwort zu fragen.

Kommentare

  • würde dies immer noch funktionieren, wenn /path/to/my/program ein Python-Skript wäre?
  • Kann das Programm stattdessen ein Alias für Bash sein (dh in .bashrc)? Oder sogar ein Shell-Skript in /usr/local/sbin? Zum Ausprobieren.
  • Nikos – nein, es kann kein Alias sein. Es muss auf einen echten Weg hinweisen.
  • Sudoers? wo ist? Es ist schwierig, Ihre Antwort zu verwenden (
  • @VasiliiSuricov: ‚ ist normalerweise in /etc, aber einige Systeme geben es an Wenn Sie ‚ es nicht finden können, versuchen Sie es mit man sudoers. Der lokale Speicherort für diese Datei sollte durch man Seite zum Zeitpunkt sudo wurde für dieses System erstellt.

Antwort

Wenn in /etc/sudoers mehrere übereinstimmende Einträge vorhanden sind, verwendet sudo den letzten. Wenn Sie also einen Befehl mit einer Kennwortabfrage ausführen können, Wenn Sie einen bestimmten Befehl ohne Kennwortabfrage ausführen möchten, benötigen Sie die letzte Ausnahme.

myusername ALL = (ALL) ALL myusername ALL = (root) NOPASSWD: /path/to/my/program 

Beachten Sie die Verwendung von , damit das Programm als Root, aber nicht als andere Benutzer ausgeführt werden kann. (Geben Sie nicht mehr Berechtigungen als das erforderliche Minimum an, es sei denn, Sie haben die Auswirkungen durchdacht.)

Hinweis für re Aders, die Ubuntu nicht ausführen oder die Standard-Sudo-Konfiguration geändert haben (Ubuntus Sudo ist standardmäßig in Ordnung) : Das Ausführen von Shell-Skripten mit erhöhten Berechtigungen ist riskant. Sie müssen von einer sauberen Umgebung aus starten (sobald die Die Shell wurde gestartet, es ist zu spät (siehe Setuid für Shell-Skripte zulassen ), daher benötigen Sie sudo, um dies zu erledigen. Stellen Sie sicher, dass Sie Defaults env_reset in /etc/sudoers haben oder dass diese Option die Standardeinstellung für die Kompilierung ist (sudo sudo -V | grep env sollte Reset the environment to a default set of variables) enthalten.

Kommentare

  • ex, um mit sudo von jhon root zu werden su an no pass —– > john ALL = (ALL) NOPASSWD: / bin / su
  • @adrian Wenn Sie beliebige Befehle als zulassen möchten root, machen Sie das john ALL=(ALL) NOPASSWD: all. Es macht keinen Sinn, ‚ über su zu gehen.
  • Frage: Sollte ich die Berechtigungen meines Shell-Skripts ändern? damit es aus Sicherheitsgründen nur vom Root-Benutzer geändert und gelesen werden kann? Ich ‚ denke an einen Angreifer, der das Skript ändert und über alle Berechtigungen verfügt, ohne dass ein Kennwort erforderlich ist, damit es das tut, was er / sie möchte. Offensichtlich kann der Angreifer ‚ nicht einmal die sudoers-Datei lesen, um zu wissen, welche Skripte dieses Privileg haben, kann es aber trotzdem mit allen meinen benutzerdefinierten Skripten versuchen, sobald er den Ordner gefunden hat, in dem sie sich befinden in der Hoffnung gespeichert, dass einige erlaubt sind, oder so ähnlich.
  • @JeffreyLebowski Wenn Sie eine Sudo-Regel haben, die das Skript (direkt oder indirekt) ausführt, dann ‚ Es ist wichtig, dass nur root (oder Personen, die ohnehin über Root-Rechte verfügen) in die Skriptdatei und in das Verzeichnis mit der Skriptdatei sowie in das übergeordnete Verzeichnis usw. schreiben kann. ‚ spielt keine Rolle, dass jemand die Skriptdatei lesen kann (es sei denn, sie enthält ein Kennwort oder etwas anderes, aber ‚ ist eine schlechte Idee. Wenn ‚ ein Passwort ist, sollte es sich in einer eigenen Datei befinden, andernfalls besteht ‚ zu viel Risiko, dass es versehentlich durch z. Einfügen dieses Codeabschnitts in eine Frage auf dieser Site.
  • @alper Nein. Nur sehr wenige Dinge müssen neu gestartet werden. Nach dem Ändern von sudoers müssen Sie ‚ nichts Besonderes tun: sudo überprüft es jedes Mal.

Antwort

WARNUNG : Diese Antwort wurde als unsicher eingestuft. Siehe Kommentare unten

Vollständige Lösung: Die folgenden Schritte helfen Ihnen, die gewünschte Ausgabe zu erzielen:

  1. Erstellen Sie eine neue Skriptdatei (ersetzen Sie create_dir.sh durch Ihren gewünschten Skriptnamen):

    vim ~/create_dir.sh 

    Das Skript wird im Home-Verzeichnis des Benutzers erstellt.

  2. Fügen Sie einige Befehle hinzu, die nur eine root oder sudo Benutzer kann Folgendes ausführen wie das Erstellen eines Ordners auf der Ebene des Stammverzeichnisses:

    mkdir /abc 

    Hinweis: Fügen Sie diesen Befehlen nicht sudo hinzu. Speichern und beenden (mit :wq!)

  3. Weisen Sie ihm Ausführungsberechtigungen zu, indem Sie Folgendes verwenden:

    sudo chmod u+x create_dir.sh 
  4. Nehmen Sie Änderungen vor, damit für dieses Skript kein Kennwort erforderlich ist.

    1. Öffnen Sie die Datei:

      sudo visudo -f /etc/sudoers 
    2. Fügen Sie am Ende die folgende Zeile hinzu:

      ahmad ALL=(root) NOPASSWD: /home/ahmad/create_dir.sh 

      Ersetzen Sie ahmad durch einen beliebigen Benutzernamen. Stellen Sie außerdem sicher, dass dies die letzte Zeile ist. Speichern und beenden.

  5. Fügen Sie nun beim Ausführen des Befehls sudo hinzu, bevor Sie Folgendes tun:

    sudo ./create_dir.sh 

    Dadurch werden die Befehle in der Skriptdatei ausgeführt, ohne nach einem Kennwort zu fragen.

Befolgen Sie die Anweisungen Hier erwähnte Schritte http://step4wd.com/2013/09/14/run-root-commands-in-linux-ubuntu-without-password/

Kommentare

  • Es wäre besser, wenn Sie hier die relevanten Schritte angeben und den Link als Backup für detailliertere Informationen verwenden würden. Auf diese Weise behält Ihre Antwort den möglichen Wert, auch wenn dieser Link nicht mehr gültig wäre.
  • Dieser Rat ist unsicher. Der sudo Teil von sudo chmod u+x create_dir.sh ist nicht erforderlich, da der Benutzer (vermutlich) Eigentümer seines Heimatverzeichnisses ist. Da der Benutzer in create_dir.sh schreiben kann, haben Sie diesem Benutzer effektiv eine kostenlose Root-Shell zugewiesen.
  • @Lekensteyn Dies bedeutet auch für jedes Programm, das als Benutzer ausgeführt wird . Könnte dem Benutzer auch erlauben, alles mit sudo ohne Passwort auszuführen.
  • Vermisse ich etwas? Ich glaube, dass die gesamte chmod nicht erforderlich ist, da Sie sich auf sudo verlassen, um Ihre Berechtigungen zu erhöhen.

Antwort

Ich denke, Ihre Syntax ist falsch. Zumindest verwende ich Folgendes, was für mich funktioniert:

myusername ALL=(ALL) NOPASSWD: /path/to/executable 

Kommentare

  • Die (ALL) Teil ist optional, das Weglassen hat genau den gleichen Effekt. (root) wäre zwar besser, aber seine Abwesenheit ‚ erklärt das Problem nicht.
  • +1 für sudo für diesen Befehl und sonst nichts! Kein Grund, das gesamte System zu beschädigen …
  • @Johan: Das war bereits in Frage.

Antwort

Wenn Sie vermeiden möchten, dass sudo verwendet oder die sudoers-Konfigurationsdatei geändert werden muss, können Sie Folgendes verwenden:

sudo chown root:root path/to/command/COMMAND_NAME sudo chmod 4775 path/to/command/COMMAND_NAME 

Dies Der Befehl wird als Root ausgeführt, ohne dass Sudo erforderlich ist.

Kommentare

  • Wow, ich habe noch nie von dieser Lösung gehört, umwerfend
  • @RyanNerd: Dies ist keine sichere Lösung. Das OP kann den Befehl jetzt nicht nur als root ohne Kennwort ausführen, sondern jeder kann den Befehl jetzt als root-Benutzer ausführen.
  • “ chmod 4775 filename “ ist eine Möglichkeit. Zweitens ist “ chmod u + s Dateiname er bessere Weg zu SETUID , ohne die Berechtigungen für ganze Dateien neu zu definieren div id = „c696d5b803“>
  • sudo chmod 005 ist sicher. Sie ‚ möchten dem aktuellen Benutzer keine Schreibberechtigungen erteilen. Andernfalls könnte jeder in Ihrer Sitzung alles mit Ihrem Skript tun.
  • Antwort

    Wenn Sie eine Distribution wie Manjaro haben Wenn Sie sich zuerst mit einer Datei befassen müssen, die die Definition von / etc / sudoers überschreibt, können Sie sie löschen oder direkt mit dieser Datei arbeiten, um Ihre neuen Konfigurationen hinzuzufügen.

    Diese Datei lautet:

    sudo cat /etc/sudoers.d/10-installer 

    Die einzige Möglichkeit, dies zu sehen, sind Root-Berechtigungen. Sie können dieses Verzeichnis nicht ohne es auflisten. Diese Datei ist Manjaro-spezifisch. Möglicherweise haben Sie diese Konfiguration mit einem anderen Namen gefunden , aber im selben Verzeichnis.

    In der Datei Ihrer Wahl können Sie die folgenden Zeilen hinzufügen, um die gewünschten Konfigurationen zu erhalten:

    Authentifizierung für eine Gruppe ignorieren

    %group ALL=(ALL) NOPASSWD: ALL 

    oder Authentifizierung für einen Benutzer ignorieren

    youruser ALL=(ALL) NOPASSWD: ALL 

    oder Authentifizierung einer ausführbaren Datei für einen bestimmten Benutzer ignorieren

    youruser ALL=(ALL) NOPASSWD: /path/to/executable 

    SCHNELLER HINWEIS: Sie öffnen eine Tür, um SUDO ohne Authentifizierung zu verwenden. Dies bedeutet, dass Sie ausgeführt werden können Alles, was alles von Ihrem System ändert, verwenden Sie es verantwortungsbewusst.

    Antwort

    Stellen Sie sicher, dass sudo nicht mit einem Alias versehen ist. Führen Sie Folgendes aus:

    /usr/bin/sudo /path/to/my/program 

    Beispiel: Ein Shell-Alias wie dieser:

    alias sudo="sudo env PATH=$PATH" 

    kann dieses Verhalten verursachen.

    Kommentare

    • Sie haben Recht, mein Kommentar war hier nicht in Ordnung, Entschuldigung . Trotzdem bin ich ‚ fasziniert – wie soll Aliasing die Verarbeitung von sudoers durch sudo ändern? Oder sprechen Sie davon, sudo auf etwas umzuleiten, das diese Fehlermeldung immer druckt, um Passwörter zu scoopen? Das ist hier unwahrscheinlich …
    • Ich hatte das gleiche Problem wie das OP. Es stellte sich heraus, dass alias sudo="sudo env PATH=$PATH" in meinem ~/.bashrc enthalten war. Anstatt es nur für mich selbst zu lösen und blindlings mein Geschäft zu betreiben, habe ich meine Antwort als mögliche Lösung für alle anderen eingereicht, die diesen Thread verfolgen.
    • That ‚ ist in Ordnung, aber wenn es nicht offensichtlich ist (was in diesem Fall zumindest für einige Leute nicht ‚ ist), ist es gut, eine Erklärung in die Antwort aufzunehmen, um einen Kontext bereitzustellen und verhindern, dass Menschen blind magische Beschwörungsformeln verwenden. +2 (- (- 1) + +1). 🙂

    Antwort

    Wenn Sie Ihr Skript ausführen, müssen Sie es als .

    Bearbeiten: Basierend auf Ihrem Kommentar zu einer anderen Antwort möchten Sie dies über ein Symbol ausführen. Sie müssen eine .desktop -Datei erstellen, die Ihr Programm wie auf dem Terminal mit sudo ausführt.

    Sie können auch die Verwendung von für eine visuelle Passwortabfrage.

    Sie sollten wahrscheinlich die Idee in Betracht ziehen, dass Sie Dinge nicht als root ausführen sollten und dass Sie das System weiter unten ändern, damit Sie es nicht tun Root-Berechtigungen überhaupt benötigen wäre ein besserer Weg.

    Kommentare

    • Machen Sie keine Shell-Skripte setuid . Siehe Setuid für Shell-Skripte zulassen .
    • Ich habe darüber nachgedacht, es nicht einmal zu erwähnen, weil es ‚ ist Es ist so eine schlechte Option. Ich habe es gerade gelöscht, weil ich ‚ befürchte, dass dieser Fragesteller den Rat auch mit der Warnung verwenden könnte, dass es sich um einen schlechten Rat handelt!

    Antwort

    Dies löste das Problem für mich (versuchte auch einige der anderen Antworten, die möglicherweise geholfen haben):

    Das Skript, das ich aufgerufen habe befand sich in /usr/bin, einem Verzeichnis, für das ich keine Schreibberechtigung habe (obwohl ich dort normalerweise keine Dateien lesen kann). Das Skript war chmodded + x (ausführbare Berechtigung), aber es funktionierte immer noch nicht. Durch Verschieben dieser Datei in einen Pfad in meinem Home-Verzeichnis anstelle von /usr/bin konnte ich sie endlich mit sudo aufrufen, ohne ein Passwort einzugeben.

    Auch etwas, das ich Zweifel (Klarstellung für zukünftige Leser): Sie müssen Ihr Skript als sudo ausführen. Geben Sie sudo ein, wenn das Skript aufruft. Verwenden Sie sudo nicht für den Befehl in Ihrem Skript, der tatsächlich root benötigt (in meinem Fall wird die Hintergrundbeleuchtung der Tastatur geändert). Vielleicht funktioniert das auch, aber Sie müssen es nicht und es scheint eine bessere Lösung zu sein, um dies nicht zu tun.

    Kommentare

    • Der zweite Absatz hatte die Antwort auf mein Problem
    • @MuhammadAhmadZafar Glad es hat geholfen!
    • Die Verwendung von sudo in einem Skript ist vollkommen in Ordnung, vorausgesetzt, Sie haben die entsprechenden Rechte (festgelegt in sudoers), um den betreffenden Befehl ohne Passwort auszuführen. Es macht die Dinge ein bisschen sicherer.
    • könnte diese Antwort wirklich als Schritt für Schritt umgeschrieben verwenden. ‚ So machen Sie es ‚ anstatt als Dialog mit den anderen Antworten
    • @WalrustheCat Guter Punkt. Wenn ich meine Antwort noch einmal lese, denke ich, dass ich selbst ein wenig verwirrt gewesen sein könnte. Im Moment kann ich mich jedoch nicht ‚ an die genaue Situation erinnern, sodass ich ‚ nicht wirklich besser schreiben kann. Wenn Sie es herausfinden, vielleicht eine Kombination aus mehreren Antworten, senden Sie auf jeden Fall eine neue Antwort!

    Antwort

    Eine andere Möglichkeit besteht darin, die super Befehl zum Ausführen Ihres Skripts als

    super /path/to/your/script 

    Wenn Sie eine binäre ausführbare Datei (z. B. die Sie aus einem C-Quellcode in eine ELF -Binärdatei kompiliert haben) – die ist kein Skript – als Root könnten Sie in Betracht ziehen, es setuid (und tatsächlich /bin/login, /usr/bin/sudo und /bin/su und super verwenden alle diese Technik). Seien Sie jedoch sehr vorsichtig, Sie könnten eine große Sicherheitslücke öffnen .

    Konkret sollte Ihr Programm dies tun paranoisch codiert sein (überprüfen Sie also alle Argumente sowie die Umgebung und die äußeren Bedingungen, bevor “ “ handelt und einen potenziell feindlichen Benutzer annimmt), dann Sie könnte seteuid (2) und Freunde (siehe auch setreuid (2) ) vorsichtig verwenden () Siehe auch -Funktionen (7) & Anmeldeinformationen (7) & execve (2) …)

    Sie werden Verwenden Sie chmod u+s (lesen Sie chmod (1) ), wenn Sie eine solche Binärdatei installieren.

    Aber Seien Sie sehr vorsichtig .

    Lesen Sie viele Dinge über setuid , einschließlich Advanced Linu x Programmieren , bevor Sie so etwas codieren.

    Beachten Sie, dass ein Skript oder ein shebang -ed Ding, kann nicht gesetzt werden. Sie können jedoch (in C) eine kleine setuid-binäre Umhüllung codieren.

    Beachten Sie, dass unter Linux der Anwendungscode mit dem Linux-Kernel Verwenden von syscalls (2) . Die meisten von ihnen könnten fehlschlagen, siehe errno (3) . Viele Linux-Anwendungen (z. B. GNU-Bash , GNU make , GNU gdb , GNOME ) sind Open Source: Sie dürfen den Quellcode herunterladen, studieren und dazu beitragen.

    Kommentare

    • Erweiterte Linux-Programmierung ist ein toter Link.

    Antwort

    Wenn Sie anpassen, welche Befehle über sudo ausgeführt werden können, sollten Sie diese Änderungen idealerweise in einer separaten Datei unter /etc/sudoers.d/ anstatt die Datei sudoers direkt zu bearbeiten. Sie sollten auch immer visudo verwenden, um die Datei (en) zu bearbeiten. Sie sollten NIEMALS NOPASSWD für ALL Befehle erteilen.

    Beispiel: sudo visudo -f /etc/sudoers.d/mynotriskycommand

    Fügen Sie Ihre Zeile ein, die die Berechtigung erteilt: myuser ALL= NOPASSWD: /path/to/your/program

    Speichern und beenden Sie dann und visudo wird Sie warnen, wenn Sie Syntaxfehler haben.

    Sie können sudo -l ausführen, um die Berechtigungen anzuzeigen, die Ihrem Benutzer erteilt wurden, sofern dies benutzerspezifisch ist NOPASSWD -Befehle werden VOR jedem %groupyouarein ALL=(ALL) ALL -Befehl in der Ausgabe angezeigt, und Sie werden zur Eingabe Ihres Kennworts aufgefordert.

    Wenn Sie finden Wenn Sie selbst viele dieser sudoers.d-Dateien erstellen, möchten Sie sie möglicherweise pro Benutzer benennen, damit sie leichter zu visualisieren sind. Beachten Sie, dass die Reihenfolge der DATEINAMEN und der REGELN in der Datei sehr wichtig ist. Der LETZTE, der geladen wird, gewinnt, unabhängig davon, ob er MEHR oder WENIGER zulässig ist als die vorherigen Einträge.

    Sie können die Reihenfolge der Dateinamen mithilfe eines Präfixes von 00-99 oder aa / bb / cc steuern. Beachten Sie jedoch auch, dass Dateien mit keinem numerischen Präfix vorhanden sind wird nach den nummerierten Dateien geladen und überschreibt die Einstellungen. Dies liegt daran, dass die Shell abhängig von Ihren Spracheinstellungen bei der „lexikalischen Sortierung“ zuerst Sortiernummern verwendet und dann beim Sortieren in „aufsteigender“ Reihenfolge möglicherweise Groß- und Kleinbuchstaben verschachtelt.

    Versuchen Sie, printf "%s\n" {{0..99},{A-Z},{a-z}} | sort und printf "%s\n" {{0..99},{A-Z},{a-z}} | LANG=C sort auszuführen, um festzustellen, ob Ihre aktuelle Sprache AaBbCc etc oder ABC dann abc, um zu bestimmen, welches das beste „letzte“ Buchstabenpräfix verwendet werden soll be.

    Antwort

    Damit jeder Benutzer ein Programm als sudo ausführen kann, ohne nach einem Passwort zu fragen, können Sie die folgende Zeile hinzufügen:

    %sudo ALL=(root) NOPASSWD: /path/to/your/program

    in /etc/sudoers

    Beachten Sie, dass % sudo es schafft.

    Kommentare

    • Während dies ‚ eine Möglichkeit ist, eine Sudo-Regel zu erreichen, ist dies nicht ‚ Beantworten Sie nicht die Frage, warum das Setzen des NOPASSWD-Flags für diese Regel immer noch zu einer Kennwortabfrage führte. In der akzeptierten Antwort finden Sie eine Idee, warum dies passiert ist.

    Antwort

    Das Folgende gilt für den Fall, dass Sie möchte einen Befehl ohne Kennwort nur ausführen, wenn er über einen bestimmten Satz von Optionen verfügt, wobei ein Teil der Optionen die Variable ist. AFAIK Es ist nicht möglich, Variablen oder Wertebereiche in sudoers-Deklarationen zu verwenden, dh Sie können den expliziten Zugriff auf command option1, aber nicht command option2 zulassen, indem Sie:

    user_name ALL=(root) /usr/bin/command option1

    aber wenn die Struktur command option1 value1 ist, wobei value1 kann variieren. Für jeden möglichen Wert von value1 müssten explizite Sudoer-Zeilen vorhanden sein. Das Shell-Skript bietet eine Möglichkeit, dies zu umgehen.

    Diese Antwort wurde von M. Ahmad Zafars Antwort inspiriert und behebt das dortige Sicherheitsproblem.

    1. Erstellen Sie ein Shell-Skript, in dem Sie sich befinden Rufen Sie den Befehl ohne sudo auf.
    2. Speichern Sie das Skript in einem Ordner mit Root-Rechten (z. B. /usr/local/bin/) Die Datei im Root-Besitz (z. B. chown root:wheel /usr/local/bin/script_name) ohne Schreibzugriff für andere (z. B. chmod 755 /usr/local/bin/script_name).
    3. Fügen Sie Sudoern mit visudo die Ausnahme hinzu:

      user_name ALL=(root) NOPASSWD: /usr/local/bin/script_name.

    4. Führen Sie Ihr Skript sudo script_name.

    Zum Beispiel möchte ich das Ruhezeitlimit für die Anzeige unter macOS ändern. Dies geschieht mit:

    sudo pmset displaysleep time_in_minutes

    Ich betrachte das Ändern des Ruhezeitlimits als unschuldige Aktion, die den Aufwand der Kennworteingabe nicht rechtfertigt, aber pmset kann viele Dinge tun und ich möchte diese anderen Dinge hinter dem sudo-Passwort behalten.

    Ich habe also Folgendes Skript unter /usr/local/bin/ds:

     #!/bin/bash if [ $# -eq 0 ]; then echo "To set displaysleep time, run "sudo ds [sleep_time_in_minutes]"" else if [[ $1 =~ ^([0-9]|[1-9][0-9]|1[0-7][0-9]|180)$ ]]; then pmset displaysleep $1 else echo "Time must be 0..180, where 0 = never, 1..180 = number of minutes" fi fi  

    Am Ende der Datei sudoers steht die folgende Zeile:

    user_name ALL=(root) NOPASSWD: /usr/local/bin/ds

    Um das Zeitlimit auf 3 Minuten festzulegen, führe ich mein Skript über das normale Benutzerkonto user_name aus:

    sudo ds 3

    PS Der größte Teil meines Skripts ist eine Eingabevalidierung, die nicht obligatorisch ist. Daher würde auch Folgendes funktionieren:

     #!/bin/bash pmset displaysleep $1  

    Antwort

    Alternativ können Sie Python verwenden Pudo Paket.

    Installation:

    user$ sudo -H pip3 install pudo # you can install using pip2 also 

    Nachfolgend finden Sie das Code-Snippet zur Verwendung in der Python-Automatisierung zum Ausführen von Befehlen mit Root-Rechten:

    user$ python3 # or python2 >>> import pudo >>> (ret, out) = pudo.run(("ls", "/root")) # or pudo.run("ls /root") >>> print(ret) >>> 0 >>> print(out) >>> b"Desktop\nDownloads\nPictures\nMusic\n" 

    Nachfolgend finden Sie das cmd-Beispiel für die Ausführung von Befehlen unter Root-Berechtigungen:

    user$ pudo ls /root Desktop Downloads Pictures Music 

    Antwort

    Im Skript sudoers, das sich in / etc / befindet, kommentieren Sie die folgende Zeile aus:

    #includedir /etc/sudoers.d

    Erstellen Sie eine Datei mit einem beliebigen Namen im Verzeichnis /etc/sudoers.d/ und fügen Sie den Inhalt wie in den maximalen Antworten angegeben hinzu. Wie für alle Benutzer als root

    #!/bin/bash ALL ALL = NOPASSWD: /path/of/the/script/which/you/want/to/run/as/root 

    Dies ist die sicherste Methode, um das Skript mit root-Berechtigung auszuführen.

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.