Benutzer in einem Bash-Skript wechseln

2310
eliocs

Ich möchte ein Bash-Skript ausführen, das den Benutzer wechselt und dann eine Reihe von Befehlen ausführt. Keiner dieser Benutzer hat root-Rechte. Ich denke, ich muss die Sudoers-Datei bearbeiten, um user1 (dem Benutzer, der das Skript ausführt) die Berechtigung zu geben, sich als user2 ohne Kennwortaufforderung anmelden zu können. Ich habe nach diesem Beispiel gesucht, aber nichts gefunden.

Danke im Voraus.

0

3 Antworten auf die Frage

1
Majenko

In diesem Beispiel:

  • Benutzer, der das Skript ausführt = fred
  • Benutzer des Skripts möchten bestimmte Befehle als = boris ausführen
  • Befehle, die das Skript als boris = / bin / cat & / bin / rm ausführen soll

In der Sudoers-Datei (visudo) haben Sie:

fred ALL=(boris) NOPASSWD:/bin/cat, (boris) NOPASSWD:/bin/rm 

Dann im Skript:

#!/bin/sh sudo -u boris cat /home/boris/privatefile sudo -u boris rm /home/boris/privaterubbish 

Wenn Sie zulassen möchten, dass Fred einen Befehl als Boris ausführt, verwenden Sie dies in Sudoers:

fred ALL=(boris) NOPASSWD:ALL 
Sie sollten den zweiten Absatz neu formatieren, z. B. in eine Liste. Daniel Beck vor 13 Jahren 0
Genau das suche ich! eliocs vor 13 Jahren 0
0
reinierpost

Fügen Sie die Befehlsserie in eine Datei ein, machen Sie sie mit #!/bin/shund machen Sie sie ausführbar. Dann erteilen Sie den Benutzern die Berechtigung, das Skript mit auszuführen visudo.

Achtung: Dies wird wahrscheinlich Escape-Anweisungen für die Ausführung eines Befehls zur Verfügung stellen. Alternativ können Sie ein C-Programm schreiben, das die betreffenden Befehle ausführt. Sogar dann müssen Sie Ihren Schritt überwachen, z. B. die Umgebungsvariablen bereinigen, die der Benutzer verwenden könnte, um die Befehle so auszuführen, dass Ihre Befehle so ausgeführt werden, wie Sie es nicht erwartet haben.

0
thatothermitch

Die Sudoers-Datei ist meiner Erfahrung nach ziemlich selbstdokumentierend; es ist voll mit Kommentaren und Beispielen. Sie können mit den Berechtigungen, die von @reinierpost erwähnt werden, ziemlich detailliert sein, und Sie sollten wissen, dass Sie diesem Benutzer tatsächlich Superuser-Berechtigungen erteilen, indem Sie ihm die Verwendung von sudo erlauben.

Wenn Sie lediglich zulassen möchten, dass der Benutzer beliebige Befehle ausführt, fügen Sie wahrscheinlich Folgendes hinzu:

origuser ALL = (ALL) ALL 

oder wenn Sie die Kennwortabfrage umgehen möchten

origuser ALL = NOPASSWD: ALL 

Was das Wechseln von Benutzern betrifft, können Sie die Benutzerumgebung des Zielbenutzers verwenden sudo -u [command]oder sudo -u -i [command]benötigen.

urk nein - das gibt dem Orchester *** FULL ROOT ACCESS *** Majenko vor 13 Jahren 0
Du hast recht; das habe ich auch in meiner antwort bemerkt thatothermitch vor 13 Jahren 0
Ein vollständiger Root-Zugriff ist in meinem Fall nicht erwünscht. eliocs vor 13 Jahren 0