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

Wie kann ich als anderer Benutzer mit sudo eine Reihe von Befehlen in einer Bash-Subshell ausführen?

Führen Sie eine Shell innerhalb von sudo aus :sudo bash -c 'whoami; whoami'

Sie können jedes Zeichen außer ' verwenden sich innerhalb der einfachen Anführungszeichen. Wenn Sie wirklich ein einfaches Anführungszeichen in diesem Befehl haben möchten, verwenden Sie '\'' (was technisch gesehen ist:End-Single-Quote-Literal, Literal ' Zeichen, Anfangsbuchstaben in einfachen Anführungszeichen; aber effektiv ist dies eine Möglichkeit, ein einfaches Anführungszeichen in eine literale Zeichenfolge mit einfachen Anführungszeichen einzufügen).


Sie können die Befehle als Standardeingabe in sudo'ed bash mit einem here-Dokument übergeben:

sudo bash <<"EOF"
whoami
id
EOF

Auf diese Weise müssen Sie sich nicht mit dem richtigen Zitieren herumschlagen, insbesondere wenn Sie mehrere Ebenen haben, z. B.:

sudo bash <<"EOF"
whoami
echo $USER ~
sudo -u apache bash <<"DOF"
whoami
echo $USER ~
DOF
EOF

Erzeugt:

root
root /root
apache
apache /usr/share/httpd

(Beachten Sie, dass Sie das innere Abschlusszeichen nicht einrücken können – es muss allein in seiner Zeile stehen. Wenn Sie in einem Hier-Dokument Einzüge verwenden möchten, können Sie <<- verwenden statt << , aber dann müssen Sie mit Tabulatoren einrücken, nicht mit Leerzeichen.)


Versuchen Sie zum Beispiel Folgendes, ich habe es getestet:

sudo bash -c "cd /;ls;ls|grep o"

In diesem Beispiel ändern Sie zuerst dir in /root, listen als nächstes das Root-Verzeichnis auf und filtern schließlich für das Root-Verzeichnis nur Verzeichnisse mit Namen mit dem Buchstaben 'o'.

Aber was besser ist, ist das Schreiben von Skripten, die alles tun, was Sie brauchen, und den Exitcode für alle komplexen Aktionen angeben. Dann können Sie ein Sudo-Skript anstelle einer Gruppe einzelner Befehle wie im obigen Beispiel verwenden.


Linux
  1. Wie kann man mit einem anderen Server per SSH auf einen Server zugreifen?

  2. Wie führe ich Befehle in Gnuplot mit Shell-Skript aus?

  3. Wie kann ich Alias-Befehle mit xargs verwenden?

  4. Wie führe ich mehrere Befehle aus, wenn ich find verwende?

  5. Wie listet man Ordner mit Bash-Befehlen auf?

So verwenden Sie Bash-Verlaufsbefehle

Führen Sie Befehle als ein anderer Benutzer über Sudo in Linux aus

So steuern Sie Vagrant Box mit Vagrant-Befehlen

Bash-Skript automatisch unter den Rechten eines anderen Benutzers ausführen

Wie man als anderer Benutzer ssh

Wie kann ich eine Datei ohne sudo in eine Subuid chownen?