Mam kilka maszyn, na których ssh regularnie, tylko w celu sudo su
spędzenia reszty sesji zalogowanej jako użytkownik specjalnego przeznaczenia. Ogólny przepływ pracy to:
mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
Chciałbym sprowadzić to do jednego linijki, którą mogę alias, więc mogę po prostu ustawić alias dla każdej maszyny i przejść do miejsca, w którym muszę być w jednym poleceniu, bez konieczności wpisywania płyty sudo su - specialuser
kotłowej. Mógłbym może skonfigurować me@othermachine
, aby sudo su
przy logowaniu, ale chciałbym zachować elastyczność, aby działać jako me
jeśli muszę.
( Uwaga: nie mam żadnej kontroli nad othermachine
tym, jak jest skonfigurowany; jest to ustalony przepływ pracy, do którego dołączyłem, gdy zostałem zatrudniony).
Moja pierwsza myśl była słuszna
ssh me@othermachine "sudo su - specialuser"
i tego rodzaju działa, ale nie daje mi żadnych wskazówek, ^C
zabija go i wylogowuje, i zakładam, że różne inne rzeczy prawdopodobnie również są złe.
Po przeczytaniu polecenia Uruchom zdalną ssh z opcją Full Login Shell wypróbowałem kilka bardziej egzotycznych rzeczy
ssh me@othermachine 'bash -l -c "sudo su - specialuser"'
i
ssh me@othermachine 'bash -l -c "sudo su - specialuser"; bash'
- z których nie spodziewałem się zadziałać, a nie zadziałały, ale pomyślałem, że powinienem wypróbować je dla kompletności (i aby uniknąć duplikatu); wyprodukowali tę samą powłokę bez monitów (druga z dodatkową premią bez powłoki do uzupełniania me
po exit
tej z drugiej specialuser
). I próbowałem
ssh me@othermachine "sudo su - specialuser -c bash -l"
ale to mnie dopadło
sudo: no tty present and no askpass program specified
Lepsze pomysły?
sudo
uderzyć ^C
? Jeśli nie mogę wymyślić nic lepszego, mógłbym spróbować.
su me
z specialuser
. Lub w .profile
lub .bashrc
, jeśli nie będziesz postępować zgodnie sudo
z exit
, pierwszy exit
zabierze Cię z powrotem me
, a drugi zakończy sesję. Lub nawet użyj pliku flagi, więc sudo
jest poprzedzony [ -f ~/.keep.me ] && del ~/.keep.me
i następuje po nim [ \! -f ~/.keep.me ] && exit
: wtedy potrzebujesz tylko skryptu lub aliasu dla polecenia me
as :>~/.keep.me; exit
. Teraz exit
zakończy sesję i me
wróci do sesji logowania.
~/.profile
po krótkim opóźnieniu?