Ich habe mehrere Computer, auf die ich regelmäßig ssh, nur sudo suum den Rest meiner Sitzung damit zu verbringen, als Spezialbenutzer angemeldet zu sein. Der allgemeine Workflow lautet:
mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
Ich möchte dies zu einem Einzeiler zusammenfassen, den ich als Alias verwenden kann, sodass ich einfach einen Alias für jede Maschine einrichten und mit einem einzigen Befehl dahin gelangen kann, wo ich sein muss, ohne die sudo su - specialuserBoilerplate eingeben zu müssen. Ich könnte vielleicht einrichten , me@othermachineum sudo suauf Login, aber ich mag die Flexibilität halten , wie zu bedienen , mewenn es nötig ist .
( Hinweis: Ich habe keine Kontrolle über othermachineoder die Art und Weise, wie es eingerichtet ist. Dies ist ein etablierter Workflow, auf den ich bei meiner Einstellung gestoßen bin.)
Mein erster Gedanke war gerecht
ssh me@othermachine "sudo su - specialuser"
und diese Art von Arbeiten, aber es gibt mir keine Aufforderung, ^Ctötet es und meldet mich ab, und ich gehe davon aus, dass verschiedene andere Dinge wahrscheinlich auch falsch sind.
Nachdem ich den Befehl Run Remote ssh mit Full Login Shell gelesen hatte, versuchte ich ein paar exotischere Dinge wie
ssh me@othermachine 'bash -l -c "sudo su - specialuser"'
und
ssh me@othermachine 'bash -l -c "sudo su - specialuser"; bash'
- von denen ich nicht erwartet hatte, dass sie funktionieren, und sie auch nicht, aber ich dachte, ich sollte sie der Vollständigkeit halber ausprobieren (und um Doppelarbeit zu vermeiden); sie erzeugte die gleichen prompt losen Schale (die zweiten mit einer zusätzlichen Bonus Aufforderung losen Schal für menachdem exitvon dem für -Ing specialuser). Und ich habe es versucht
ssh me@othermachine "sudo su - specialuser -c bash -l"
aber es hat mich gerade erwischt
sudo: no tty present and no askpass program specified
Bessere Ideen?
sudoschlagen sollte ^C? Wenn ich mir nichts Besseres einfallen lassen kann, könnte ich das versuchen.
su meaus specialuser. Oder in .profileoder .bashrc, wenn Sie dem sudomit nicht folgen exit, exitbringt Sie Ihr erster zurück me, mit einem zweiten, um die Sitzung zu beenden. Oder verwenden Sie sogar eine Flag-Datei, der Folgendes sudovorangestellt [ -f ~/.keep.me ] && del ~/.keep.meund gefolgt wird [ \! -f ~/.keep.me ] && exit: Sie benötigen dann nur ein Skript oder einen Alias für einen Befehl meals :>~/.keep.me; exit. Jetzt exitbeenden Sie Ihre Sitzung und mekehren zu Ihrer Anmeldesitzung zurück.
~/.profilenach einer kurzen Verzögerung?