GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Möglichkeit, ein Shell-Skript immer als Root auszuführen?

Ich möchte wissen, wie man (wenn möglich) ein Bash-Skript erstellt, das als root auf Debian läuft, unabhängig vom Benutzer, der es ausführt, ohne nach irgendeiner Art von Authentifizierung zu fragen.

Diese Datei führt alle ihre Befehle so aus, als wäre sie der Root-Benutzer, aber nur der echte Root-Benutzer kann sie lesen oder darauf schreiben.

Ich brauche das, weil ich Befehle wie swapoff ausführen möchte , swapon , apt , etc… Aber durch eine andere Anwendung, und ich möchte, dass sie mich nicht nach einem Passwort fragt.

Die Befehle werden korrigiert (diese Root-Befehle werden ihre Parameter in der Datei haben, nicht als Eingabe), also sind die Auswirkungen auf die Sicherheit nicht gerade meine Hauptbeschäftigung, aber ich akzeptiere auch Erklärungen.

Akzeptierte Antwort:

Der Low-Level-Weg, ein Programm immer unter einer bestimmten UID laufen zu lassen, ist das setuid-Bit in der Binärdatei. So geht z.B. sudo und su ihre Root-Berechtigungen erhalten, auch wenn sie normalerweise von normalen Benutzern gestartet werden.
Aber im Allgemeinen unterstützen Unix-ähnliche Systeme keine setuid Skripte , siehe:Setuid in Shell-Skripten zulassen

Was Sie jedoch tun können, ist, sudo zu konfigurieren oder ein anderes solches Tool, um den Benutzern zu ermöglichen, einige bestimmte Dateien mit den entsprechenden Berechtigungen auszuführen. Beispielsweise würde dies viceadmin erlauben um /usr/local/bin/sudoswapon auszuführen mit beliebigen Argumenten und ohne Authentifizierung:

viceadmin ALL = NOPASSWD:/usr/local/bin/sudoswapon

Nun, seit sudo befasst sich mit dem Ändern von Privilegien selbst, sudoswapon kann ein Shell-Skript sein.

Sie haben Recht, wenn Sie anmerken, dass das Skript vorsichtig sein müsste, wie es mit Befehlszeilenargumenten umgeht, und zwar alle es gelten die Fallstricke der Shell-Sprache. Zum Glück sudo filtert die meisten Umgebungsvariablen heraus, zumindest wenn env_reset Option ist gesetzt.


Linux
  1. Wo wird ein Shell-Skript ausgeführt?

  2. Wie führen Sie ein Skript beim Anmelden in * nix aus?

  3. Gibt es eine Möglichkeit, Shell-Befehle auf Android programmgesteuert auszuführen?

  4. Kann ich ein Skript immer als root ausführen lassen?

  5. Kali Linux VM:Berechtigung zum Ausführen des Shell-Skripts als Root verweigert

So führen Sie einen Linux-Shell-Befehl / ein Skript im Hintergrund aus

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

So erstellen und führen Sie ein Shell-Skript in Ubuntu 22.04 aus

Shell-Befehl in Jenkins als Root-Benutzer ausführen?

Was ist der schnellste Weg, um ein Skript auszuführen?

Führen Sie ein Shell-Skript als ein anderer Benutzer aus