Wie schreibe ich ein Skript, das Befehle nach su ausführt, ohne -c zu verwenden?

7

Ich versuche, eine Standardaktivität auf einem System zu automatisieren, auf dem ich keinen Root-Zugriff habe. Der Administrator der Systeme hat mir die Berechtigung erteilt, einen sudo su - 'user'Befehl auszuführen , und nur diesen Befehl. Ich kann kein -cArgument hinzufügen oder sudowerde scheitern.

Mein Skript muss mit meinen Berechtigungen beginnen und in der Mitte der Änderung mit den Berechtigungen des Benutzers ausgeführt werden. Ich versuche herauszufinden, ob es eine Möglichkeit gibt, ein Skript dazu zu bringen, dies in einem einzigen Befehl für mich zu tun.

Bevor jemand fragt, visudoist es ziemlich schwierig , meine Berechtigungen zu erweitern. Obwohl ich wahrscheinlich sudas Passwort verwenden könnte, kenne ich das Passwort des Benutzers nicht, möchte es nicht ändern und sollte es sowieso in meinem Skript fest codieren, so dass reguläres suohne sudokeine Option ist. Es scheint, als müsste es eine Möglichkeit geben, mit dem Befehl zu arbeiten, zu dessen Verwendung ich berechtigt bin.

dsollen
quelle

Antworten:

8

Setzen Sie die Befehle , die Sie als den anderen Benutzer in eine separate Datei ausgeführt werden soll, user2commandsund dann tun

sudo su - user <user2commands

Wenn Sie keine separate Datei haben möchten, beachten Sie:

sudo su - user << EOF-
     Befehle, die als anderer Benutzer ausgeführt werden sollen
        ︙
EOF
G-Man sagt "Reinstate Monica"
quelle
2
Dies hat ein seltsames Verhalten, wenn die Befehle mit Standardeingaben interagieren müssen. Wenn Sie catdies beispielsweise verwenden, funktioniert dies nicht (z. B. versuchen Sie es echo cat | sudo su - user)
pqnet
So entkommen Sie dem <Zeichen, wenn wir den gesamten sudo-Befehl in ein Argument in einer XML-Datei einfügen. Ich benutze Phing, also möchte ich so etwas machen - <exec command="sudo su auto_deploy << EOF echo 'Logged in user' whoami EOF" dir="${dir.scratchpad}" />. Der <<vor dem EOF wirft XML - Validierungsfehler.
Sandeepan Nath
1

Aus meiner persönlichen Erfahrung hat dies nie funktioniert. Das Herausfinden einer Problemumgehung führt zu mehr Arbeit und funktioniert möglicherweise nicht ordnungsgemäß, wenn Sie nicht über Root-Berechtigungen verfügen.

Unixmiah
quelle