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

Wie lösche ich Root-Rechte in Shell-Skripten?

Die Option „–up“ in OpenVPN wird normalerweise für das Routing usw. verwendet. Daher wird sie verarbeitet, bevor OpenVPN die Root-Rechte aufgibt, um als „Niemand“ ausgeführt zu werden. Ich rufe jedoch Shell-Skripte auf, die als nicht privilegierter Benutzer ausgeführt werden müssen.

Wie mache ich das? Ich habe Drop Process Privileges studiert, insbesondere die Antworten von Polynomen und Tylerls, aber ich verstehe nicht, wie man sie implementiert. Ich arbeite in Centos 6.5 und suid ist blockiert, sowohl als „chmod u+s“ als auch als „setuid()“.

Es gibt ein OpenVPN-Plugin („openvpn-down-root.so“), das es ermöglicht, dass Skripte, die mit der Option „–down“ aufgerufen werden, als Root ausgeführt werden. Es könnte ein Äquivalent geben, wie „openvpn-up-user.so“, aber ich habe es nicht gefunden.

Bearbeiten0

Laut Nikola Koturs Antwort habe ich Ian Meyers Runit-RPM installiert. Obwohl der chpst-Befehl im Terminal funktioniert, schlägt er im up-Skript mit „Befehl nicht gefunden“ fehl. Was funktioniert, ist „sudo chpst“ plus das Einstellen der richtigen Anzeige und Sprache. Siehe Warum gibt mein Terminal Unicode-Zeichen nicht richtig aus? Angesichts dessen benötigt das up-Skript diese vier Zeilen:

LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo chpst -u user -U user /home/user/unprivileged.sh &

Bearbeiten1

Laut dem Kommentar von 0xC0000022L finde ich, dass „sudo -u user“ genauso gut funktioniert wie „sudo chpst -u user -U user“:

LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo -u user /home/user/unprivileged.sh &

Ich werde Mann-Sudoer studieren und aktualisieren, ob/wenn ich Sudo alleine zum Laufen bekomme.

Akzeptierte Antwort:

Ich verwende runits chpst Tool für solche Aufgaben. Rufen Sie beispielsweise aus dem up-Skript Ihr unprivilegiertes Skript auf:

chpst -u nobody /path/to/script

Linux
  1. So richten Sie Sudo-Berechtigungen für Benutzer in Linux ein

  2. Wie wechselt man vom Root-Benutzer zu einem anderen Benutzer, der eine Nologin-Shell hat?

  3. So führen Sie Python-Skripte von der Shell aus

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

  5. Wie erstelle ich einen zusätzlichen Root-Benutzer?

So listen Sie alle Benutzer in Linux auf

So überprüfen Sie die MySQL-Benutzerrechte unter Linux

Wie melde ich mich als Root in Mysql an?

Wie verwende ich if-else in Shell-Skripten?

So beschränken Sie den Root-Benutzer in CentOS

Wie aktiviere ich den Root-Benutzer in Ubuntu Server?