Ho diverse macchine in cui mi collego regolarmente solo allo scopo di utilizzare sudo super passare il resto della mia sessione, come utente speciale. Il flusso di lavoro generale è:
mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
Vorrei ridurlo in una riga che posso alias, quindi posso semplicemente impostare un alias per ogni macchina e arrivare dove devo essere in un singolo comando, senza dover digitare il sudo su - specialuserboilerplate. Potrei forse impostare su me@othermachineal sudo sulogin, ma mi piacerebbe mantenere la flessibilità di operare come mese fosse necessario.
( Nota: non ho alcun controllo othermachineo il modo in cui è impostato; questo è un flusso di lavoro consolidato su cui sono entrato quando sono stato assunto.)
Il mio primo pensiero fu giusto
ssh me@othermachine "sudo su - specialuser"
e questo tipo di lavoro funziona, ma non mi viene richiesto, lo ^Cuccide e mi disconnette, e presumo che anche molte altre cose siano probabilmente sbagliate.
Dopo aver letto il comando Run Remote ssh con Full Login Shell ho provato un paio di cose più esotiche come
ssh me@othermachine 'bash -l -c "sudo su - specialuser"'
e
ssh me@othermachine 'bash -l -c "sudo su - specialuser"; bash'
- nessuno dei quali mi aspettavo di lavorare, e non lo fecero, ma pensai che avrei dovuto provarli per completezza (ed evitare il doppio come duplicato); hanno prodotto la stessa shell priva di prompt (la seconda con una shell priva di bonus aggiuntiva per il meafter exit-ing di quella per specialuser). E ci ho provato
ssh me@othermachine "sudo su - specialuser -c bash -l"
ma mi ha appena preso
sudo: no tty present and no askpass program specified
Idee migliori?
sudodovrei colpire ^C? Se non riesco a trovare qualcosa di meglio, potrei provarlo.
su meda specialuser. Oppure in .profileo .bashrc, se non segui il sudocon exit, il tuo primo exitti riporterà indietro me, con un secondo per terminare la sessione. O anche usare un file flag, quindi sudoè preceduto [ -f ~/.keep.me ] && del ~/.keep.mee seguito da [ \! -f ~/.keep.me ] && exit: è quindi necessario solo uno script o un alias per un comando mecome :>~/.keep.me; exit. Ora exitterminerà la sessione e metornerà alla sessione di accesso.
~/.profiledopo un breve ritardo?